SFTP из PHP - неопределенных постоянных ПРОТОКОЛОВ CURLOPT и CURLPROTO SFTP?


Из моего php-скрипта мне нужно иметь возможность загружать csv-файл на удаленный сервер через sftp. Я следовал принятому ответу на этот вопрос:

SFTP из PHP

Вот как выглядит мой код

<?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:[email protected]/'.$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;
?>

Результат был

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

Я использую curl libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.10. Когда я сделал sudo apt-get install php5-curl, компьютер сказал, что у меня самая последняя версия.

Что я делаю не так? Как я загружаю свои файлы sftp на удаленный сервер с php?

Author: Community, 2009-11-20

2 answers

Во-первых, установленная вами версия libcurl не кажется достаточно новой, чтобы иметь возможности, которые вы пытаетесь использовать.

Тогда также может быть так, что ваш libcurl не был скомпилирован для поддержки SFTP, когда кто-то его создал. необходимо создать libcurl, чтобы использовать libssh2 для передачи SCP и SFTP для работы.

 2
Author: Daniel Stenberg, 2009-11-20 22:09:00

Если вы не можете использовать CURL для выполнения SFTP, вы можете использовать эту реализацию SFTP на чистом PHP:

Http://phpseclib.sourceforge.net/

 0
Author: dreamafter, 2009-11-24 23:06:34