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

时间:2016-02-11 05:17:59

标签: php

我正在尝试将文件传输到共享主机帐户(godaddy)并且它失败了:

警告:ssh2_scp_send():创建远程文件失败:无法在“local / file / path”中发送文件

我安装了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);

我也在尝试通过PHP使用sftp时遇到问题。我在网上的其他地方读到你必须在文件路径上使用双引号,每当它们失败时,打印的路径看起来都是正确的,但也许我错过了什么?

更新

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

1 个答案:

答案 0 :(得分:2)

ssh2_scp_send需要绝对路径,我使用pwd解决了我的问题,我需要发送文件。 ~/也不起作用,这不是一条绝对的道路。

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

我建议使用phpseclib或ssh2_sftp

有趣的话题: