使用 ssh2_scp_send 的 PHP 脚本无法创建远程文件

pho*_*ode 3 php

我正在尝试将文件传输到共享托管帐户(godaddy),但失败了:

警告:ssh2_scp_send():创建远程文件失败:无法发送“本地/文件/路径”中的文件

我已经安装了 SSH2 并且连接正常。我什至运行了 ssh2_exec 命令来查看是否可以影响远程服务器,并且我能够创建一个目录。我还成功地在命令行上直接使用 scp 进行双向...作为进一步的故障排除尝试,我反转了文件路径并创建了一个远程服务器文件以供其尝试下载,但出现此错误:

无法打开流:没有这样的文件或目录

我打电话给主机以确保我使用正确的绝对文件路径,我尝试了很多变体,但仍然收到此错误。我认为我的问题出在远程文件路径的某个地方。

问题代码如下:

$localpath=$_SERVER['DOCUMENT_ROOT'].'/local_file_path/' ;

$remotepath = 'website.com/public_html/folder/' ;

$connection = ssh2_connect('website.com', 22);

ssh2_auth_password($connection,'username','password' );

ssh2_scp_send($connection,"$localpath"."SUCCESS.txt", "$remotepath"."SUCCESS.txt", 0644);
Run Code Online (Sandbox Code Playgroud)

我在尝试通过 PHP 使用 sftp 时也遇到问题。我在网络上的其他地方读到,您必须在文件路径上使用双引号,每当它们失败时,打印的路径就会显示正确,但也许我遗漏了一些东西?

更新

我使用 filezilla 通过 sftp 登录共享主机帐户,发现复制时,完整的 url 路径与登录时给出的常规 ftp 不同。我现在可以上传文件,但是,讽刺的是,我似乎还无法下载...我仍然收到有关无法在远程服务器上找到文件路径的错误。

小智 5

ssh2_scp_send 需要绝对路径,我通过使用pwd需要发送文件的位置解决了我的问题。~/也不起作用,它不是绝对路径。

此页面的底部评论http://www.php.net/manual/en/function.ssh2-scp-send.php指的是您可能遇到的问题。

我建议,使用phpseclib或 ssh2_sftp

有趣的话题: