SFTP from PHP - undefined constant CURLOPT_PROTOCOLS and CURLPROTO_SFTP?

10,385

First, your installed libcurl version doesn't seem to be new enough to have the options you try to use.

Then, it might also be so that your libcurl wasn't compiled to support SFTP when whoever built it. libcurl need to be built to use libssh2 for SCP and SFTP transfers to work.

Share:
10,385
Patr01
Author by

Patr01

We consult and build stuff out of Toronto!

Updated on June 05, 2022

Comments

  • Patr01
    Patr01 over 1 year

    From my php script, i need to be able to upload a csv file to a remote server via sftp. I followed the accepted answer from this question:

    SFTP from within PHP

    Here's what my code looks like

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

    The output 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
    

    I am using curl libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.10 . When I did a sudo apt-get install php5-curl, the computer said i had the most recent version.

    What am I doing wrong? How do i sftp upload my files to a remote server from php?