1

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)が返されますが、修正方法がわかりません。この問題に直面しましたか?どのように修正しましたか?何か案は?

ありがとう!

4

1 に答える 1

2

これは、libcurlが「SSHレイヤー」(libssh2)から何らかのエラーを受け取ったことを意味します。VERBOSEを有効にすると、詳細が表示される場合があります。

かなり古いバージョンのlibcurlとlibssh2を使用しているため、これらを最新バージョンにアップグレードするだけでこの問題を修正できることは考えられません。

于 2012-04-19T06:35:10.270 に答える