【问题标题】:How to fix PHP curl error CURLE_SSH (79) when using sftp to upload file使用 sftp 上传文件时如何修复 PHP curl 错误 CURLE_SSH (79)
【发布时间】:2012-04-30 02:24:21
【问题描述】:

我正在尝试在我的 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');

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;

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

谢谢!

【问题讨论】:

  • 你在什么操作系统上使用什么 curl 版本和什么 libssh2 版本?您使用的是哪个 PHP 版本以及 PHP curl 扩展的哪个版本?
  • curl 7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 libssh2/1.2.2 协议:tftp ftp telnet dict ldap ldaps http 文件 https ftps scp sftp 特点:GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
  • 使用 PHP 5 的 ubuntu 11.10 .. 我会在 curl 扩展版本上回复您

标签: php curl ssh sftp libssh2


【解决方案1】:

这意味着 libcurl 从“SSH 层”(libssh2) 得到某种错误。如果您启用 VERBOSE,您可能会看到更多详细信息。

您使用的是相当旧的 libcurl 和 libssh2 版本,因此只需将它们升级到现代版本即可解决此问题并非不可想象。

【讨论】:

  • 我会这样做,看看它会把我带到哪里。非常感谢!
  • 这个问题是很久以前提出的,我不再有权访问相关环境“/将 -vvv 添加到连接有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多