PHP SFTP - tanımsız sabit CURLOPT_PROTOCOLS ve CURLPROTO_SFTP?

2 Cevap php

Benim php script i SFTP yoluyla uzak sunucuya bir csv dosyası yüklemek gerekiyor. Ben bu soruya gelen kabul cevabı izledi:

http://stackoverflow.com/questions/717854/sftp-from-within-php

İşte benim kod benziyor ne

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
        $ch = curl_init();
        $localfile = 'export-3.csv';
        $fp = fopen($localfile, 'r');
        curl_setopt($ch, CURLOPT_URL, 'sftp://user:pass@ftp.remote.com/'.$localfile);
        curl_setopt($ch, CURLOPT_UPLOAD, 1);
        curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
        curl_setopt($ch, CURLOPT_INFILE, $fp);
        curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
        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;
?>

Çıktı was

Notice: Use of undefined constant CURLOPT_PROTOCOLS - assumed 'CURLOPT_PROTOCOLS' in /home/john/public_html/test/test.php on line 9

Notice: Use of undefined constant CURLPROTO_SFTP - assumed 'CURLPROTO_SFTP' in /home/john/public_html/test/test.php on line 9
File upload error.1

Ben libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.10 curl kullanıyorum. Ben bir sudo apt-get install php5-curl yaptım, bilgisayar i en son sürümü vardı dedi.

Ben yanlış ne yapıyorum? Nasıl php uzak bir sunucuya benim dosya upload sftp mı?

2 Cevap

İlk olarak, yüklü libcurl sürümü kullanmayı deneyin seçenekleri için yeterli yeni olmak görünmüyor.

Sonra, aynı zamanda libcurl kim inşa zaman SFTP'yi desteklemek için derlenmiş değildi ki olabilir. libcurl çalışmak için SCP ve SFTP transferi için libssh2 kullanmak üzere inşa edilmesi gerekir.

SFTP'yi yapmak için CURL kullanamıyorsanız, size SFTP bu saf-PHP uygulama kullanmak mümkün olabilir:

http://phpseclib.sourceforge.net/