3

私のphpスクリプトから、sftp経由でcsvファイルをリモートサーバーにアップロードできる必要があります。私はこの質問から受け入れられた答えに従いました:

PHP 内からの SFTP

私のコードは次のようになります

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

出力は

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 を実行すると、コンピューターは最新バージョンを持っていると言った。

私は何を間違っていますか?ファイルをphpからリモートサーバーにsftpアップロードするにはどうすればよいですか?

4

2 に答える 2

2

まず、インストールされているlibcurlのバージョンは、使用しようとしているオプションを使用できるほど新しいものではないようです。

次に、libcurlをビルドしたときにSFTPをサポートするようにコンパイルされなかった可能性もあります。SCPおよびSFTP転送が機能するためにlibssh2を使用するには、libcurlを構築する必要があります。

于 2009-11-20T22:09:00.550 に答える
0

CURL を使用して SFTP を実行できない場合は、このピュア PHP 実装の SFTP を使用できる可能性があります。

http://phpseclib.sourceforge.net/

于 2009-11-24T23:06:34.310 に答える