dongyun6003
2012-04-18 16:04
浏览 309
已采纳

如何在使用sftp上传文件时修复PHP curl错误CURLE_SSH(79)

I'm trying to reproduce the following command to upload a file via sftp on my PHP app:

curl -T /var/repo/file -u user:password sftp://server.com/folder/

The above commands works just fine (I had to recompile libcurl on my ubuntu box in order to make it work, though). However, when I tried to use PHP's curl library, things didn't go so well for me.

The code I'm using is the following:

$ch = curl_init();
$localfile = 'file';
$fp = fopen($localfile, 'r');

curl_setopt($ch, CURLOPT_URL, 'sftp://server.com/folder/');
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_USERPWD, 'user:password');
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_exec ($ch);
$error_no = curl_errno($ch);
curl_close ($ch);

if ($error_no == 0) {
    $error = 'File uploaded succesfully.';
} else {
    $error = 'File upload error.';
}
echo $error.' '.$error_no;

This gives back error 79: CURLE_SSH (79) which I dont know how to fix. Have you faced this problem? How did you fix it? Any ideas?

Thanks!

图片转代码服务由CSDN问答提供 功能建议

我正在尝试重现以下命令,通过我的PHP应用程序上的sftp上传文件:

  curl -T / var / repo / file -u user:password sftp://server.com/folder/ 
   
 
 

上面的命令工作得很好(我必须在我的ubuntu盒子上重新编译libcurl才能使它工作)。 但是,当我尝试使用PHP的curl库时,事情对我来说并不是那么好。

我正在使用的代码如下:

  $ ch = curl_init(); 
 $ localfile ='file'; 
 $ fp = fopen($ localfile,'r'); 
 
 ncurl_setopt($ ch,CURLOPT_URL,'sftp:  //server.com/folder/');
curl_setopt($ch,CURLOPT_UPLOAD,1); 
curl_setopt($ ch,CURLOPT_USERPWD,'user:password'); 
curl_setopt($ ch,CURLOPT_PROTOCOLS,CURLPROTO_SFTP); 
curl_setopt  ($ ch,CURLOPT_INFILE,$ fp); 
curl_setopt($ ch,CURLOPT_INFILESIZE,filesize($ localfile)); 
curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false); 
curl_exec($ ch); 
 $ error_no = curl_errno(  $ ch); 
curl_close($ ch); 
 
if($ error_no == 0){
 $ error ='文件上传成功。'; 
} else {
 $ error ='文件上传错误。  '; 
} 
echo $ error。'  '。$ error_no; 
   
 
 

这回复了错误79:CURLE_SSH(79),我不知道如何修复。 你遇到过这个问题吗? 你怎么修好它的? 有什么想法吗?

谢谢!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dongqiao1888 2012-04-19 06:35
    已采纳

    It means libcurl got some kind of error from the "SSH layer" (libssh2). If you enable VERBOSE you might see further details.

    You're using fairly old libcurl and libssh2 versions so it is not unthinkable that you can fix this problem simply by upgrading those to modern versions.

    打赏 评论

相关推荐 更多相似问题