Como corrigir o erro de curvatura do PHP CURLE_SSH (79) ao usar o sftp para carregar o arquivo

Estou tentando reproduzir o seguinte comando para carregar um arquivo via sftp no meu aplicativo PHP:

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

Os comandos acima funcionam bem (eu tive que recompilar o libcurl na minha checkbox ubuntu para fazê-lo funcionar, no entanto). No entanto, quando eu tentei usar a biblioteca de curvas do PHP, as coisas não foram tão boas para mim.

O código que estou usando é o seguinte:

 $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; 

Isso dá o erro de volta 79: CURLE_SSH (79) que eu não sei como consertar. Você enfrentou esse problema? Como você consertou isso? Alguma ideia?

Obrigado!

Isso significa que o libcurl obteve algum tipo de erro da “camada SSH” (libssh2). Se você habilitar o VERBOSE, poderá ver mais detalhes.

Você está usando versões libcurl e libssh2 bastante antigas por isso não é impensável que você consiga solucionar esse problema simplesmente atualizando as versões modernas.