Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ssh2_scp_发送:失败,可能是因为未知的远程目录_Php_Sftp_Scp - Fatal编程技术网

Php ssh2_scp_发送:失败,可能是因为未知的远程目录

Php ssh2_scp_发送:失败,可能是因为未知的远程目录,php,sftp,scp,Php,Sftp,Scp,我使用ssh2_scp_send通过SFTP将文件从一台服务器传输到另一台服务器。虽然我可以确认对远程服务器的访问,并可以使用GUI应用程序(FileZilla)传输文件,但我的ssh2\u scp\u发送调用失败 我认为这可能是因为我不知道(也不容易找到)远程服务器的完整路径。我假设如果我只传递文件名,它将默认为允许用户访问的父目录 $conn = ssh2_connect('domain', 22); $auth = ssh2_auth_password($conn, 'user', 'pa

我使用ssh2_scp_send通过SFTP将文件从一台服务器传输到另一台服务器。虽然我可以确认对远程服务器的访问,并可以使用GUI应用程序(FileZilla)传输文件,但我的ssh2\u scp\u发送调用失败

我认为这可能是因为我不知道(也不容易找到)远程服务器的完整路径。我假设如果我只传递文件名,它将默认为允许用户访问的父目录

$conn = ssh2_connect('domain', 22);
$auth = ssh2_auth_password($conn, 'user', 'password');

if ($auth) {
  //send the file
  $send = ssh2_scp_send($conn, $file, $data['xml_filename']);
}
我尝试使用ssh2_exec($ssh_conn,'ls-la')检索目录并尝试找出位置,但失败了(我拥有的访问凭据不允许使用除SFTP之外的SSH命令)

我的问题是:

  • 有没有一种简单的方法可以找到完整的远程路径
  • 有没有办法告诉ssh2\u scp\u send只使用默认目标
  • 我还应该排除哪些故障?我只是猜测,以上就是问题所在——可能完全不同

  • ssh2\u scp\u send
    不执行SFTP-它执行scp。没有shell访问权限,您无法执行SCP

    如果您坚持使用libssh2与phpseclib,那么您必须使用
    ssh2.sftp://
    fopen包装,然后执行
    fwrite()
    fputs()


    至于获取默认的完整远程路径
    ssh2\u sftp\u realpath('.')
    应该可以做到这一点。

    是的,这正是我发现的。我可以通过初始化ssh2\u sftp,然后使用file\u get\u contents/file\u put\u contents来传输它