通过PHP将文件从Linux服务器通过SFTP发送到Windows服务器时遇到了很多麻烦。
我似乎连接得很好,但它总是抛出一个错误,我不能在远程服务器端创建文件。我可能会弄乱文件位置的语法。
我现在尝试了两种方法,一种使用ssh2_scp_send()
,另一种尝试
fopen(ssh2.sftp://D:/path/file.csv)
此外,通过客户端登录sftp服务器将我放在我的主文件夹(即D:\ path \ to \ home)但如果我这样做
ssh2_exec($connection, 'cd');
并将流打印到屏幕上,它向我显示我的ssh会话当前位于C盘上的Windows文件系统中。
我希望有人会就此提出一些建议。而且我没有和这种方法结婚。我正在使用php,因为它全部来自drupal模块,但我总是可以尝试使用另一种方法。
答案 0 :(得分:1)
如果你想要做的就是发送一个文件,我认为curl有效,但是如果你想做更多的事情 - 比如可能验证文件已经上传,上传多个文件,使用publickey认证等等,卷曲只是不够多才多艺。
答案 1 :(得分:0)
CURL可以使用sftp库。
$localfile = 'test.txt';
$ch = curl_init();
$fp = fopen ($localfile, "r") or die('Cannot open textfile');
curl_setopt($ch, CURLOPT_URL,"sftp://123.123.123.123:10022/username/test.txt");
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
if(curl_exec($ch)){
echo 'File was successfully transferred using SFTP';
}else{
echo 'File was unable to be transferred using SFTP';
}
curl_close ($ch);