Upload files to SFTP server via PHP (phpseclib)

13,903

Now I know what's the problem with the script.

The remote directory URL was wrong. "incoming/" should be "/incoming/"

Share:
13,903
maikelsabido
Author by

maikelsabido

Gleek | Computer Geek | Augustinian | Coffee Lover | Web Developer | Graphic Artist | Jack of All Trades

Updated on July 23, 2022

Comments

  • maikelsabido
    maikelsabido almost 2 years

    I have CSVs that I want to upload to the 'incoming' folder in the SFTP server. I am using phpseclib to do this. The connection is already there but it does not output anything.

    I'm not sure if what I did was correct since I haven't dealt with SFTP before. Here's what my code looks like:

    $file = "leads.csv";
    
    $server = "41.160.150.200";
    //$server = "ft.bayport.co.za";
    $port = "22";
    $username = "";
    $password = ""; 
    
    //username and password removed for security reasons
    
    set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
    
    include 'Net/SFTP.php';
    
    define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX); // or NET_SFTP_LOG_SIMPLE
    
    $sftp = new Net_SFTP($server);
    
    // Check SFTP Connection
    if (!$sftp->login($username, $password)) {
        echo 'Login Failed.';
        echo $sftp->getSFTPLog();
    }else{
    
    echo 'Connected to SFTP.';
    
    echo $sftp->pwd();
    
    // Upload CSVs to SFTP incoming folder
         echo $upload = $sftp->put("incoming/".$file, "./bayport/".$file, NET_SFTP_LOCAL_FILE);
    
    }
    

    I would really appreciate any help. Thanks!

    • neubert
      neubert about 10 years
      What's the output of that script? Does the login fail or does it successfully connect? Does pwd() return the output that you'd expect? $sftp->put() returns a boolean depending on if the upload succeeded or not. idk if that's what you were expecting?
    • maikelsabido
      maikelsabido about 10 years
      Hi @neubert Thanks for the response. It is successfully connected. I know what's the problem now. "incoming/" should be "/incoming/"