我正在尝试将文件传输到共享主机帐户(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时的路径不同。我现在可以上传一个文件,但是,我似乎无法下载,具有讽刺意味的是...我仍然得到关于无法在远程服务器上找到文件路径的错误。
答案 0 :(得分:2)
ssh2_scp_send需要绝对路径,我使用pwd
解决了我的问题,我需要发送文件。 ~/
也不起作用,这不是一条绝对的道路。
此页面上的最后评论http://www.php.net/manual/en/function.ssh2-scp-send.php指的是您可能遇到的问题。
我建议使用phpseclib或ssh2_sftp
有趣的话题: