Я пытаюсь воспроизвести следующую команду для загрузки файла через sftp в моем приложении PHP:
curl -T /var/repo/file -u user:password sftp://server.com/folder/
Вышеприведенные команды работают очень хорошо (мне пришлось перекомпилировать libcurl на моем ящике ubuntu, чтобы заставить его работать). Однако, когда я пытался использовать библиотеку curl PHP, все было не так хорошо для меня.
Код, который я использую, следующий:
$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), которую я не знаю, как исправить. Вы столкнулись с этой проблемой? Как ты это починил? Есть идеи?
Благодаря!
Это означает, что libcurl получил какую-то ошибку из «уровня SSH» (libssh2). Если вы включите VERBOSE, вы можете увидеть дополнительную информацию.
Вы используете довольно старые версии libcurl и libssh2, поэтому небезызвестно, что вы можете исправить эту проблему, просто обновив их до современных версий.