Saturday, December 8, 2012

How to transfer files via SFTP in PHP

It's been a long time since my last post and good I'm back again. Anyway, below is my simple script to transfer files via SFTP in PHP. Hope this helps.

<?php

// set your sftp credential (host, port, username, password)
// local file (source file)
// remote file (destination file)


$host = '<host server to connect>';
$port = '<port to connect>';
$user = '<username to sftp>';
$pass = '<password to sftp>';
$lfile = '/path/to/local/file';
$rfile = '/path/to/remote/file';

// use ssh2 php module to connect

// if ssh2 is not installed/enable, please install/enable)
$connection = ssh2_connect($host, $port);
ssh2_auth_password($connection, $user, $pass);

// use sftp to connect
$sftp = ssh2_sftp($connection);

// open stream connection to remote server
$stream = @fopen('ssh2.sftp://'.$sftp.$rfile, 'w');

try {
    if (!$stream) throw new Exception("Could not open remote file: $rfile");

    // get data of the local file
    $data = @file_get_contents($lfile);
    if ($data === false) throw new Exception("Could not open local file: $lfile.");

    // write the data to stream remote file
    if (@fwrite($stream, $data) === false) throw new Exception("Could not send data from file: $lfile.");
    echo 'done!';

} catch (Exception $e) {
    // echo error message
    echo $e->getMessage();
}

// closing the stream
fclose($stream);

?>


Hope this helps and please leave a post if you like it. Thanks!!

6 comments:

  1. I prefer phpseclib, a pure PHP SFTP implementation:

    http://phpseclib.sourceforge.net/

    It's more portable, more reliable and surprisingly faster too in my experience.

    ReplyDelete
  2. I can give that a try but the script above can work without including any library like NET/SFTP.php, you just have to enable/install SSH2 on PHP. Anyway, thank you for the source. Appreciate it! I'll try this.

    ReplyDelete
  3. whay my run eror Could not open remote file: /home/budgetdb/tm1/test?? what can i do for check?

    ReplyDelete
    Replies
    1. Hmm.. the error says they can't open the remote file, so the problem here is on the remote server.. Please try to ssh to the server first then try this command upon doing ssh.. "cd /home/budgetdb/tm1/test" and see if you can go to that directory.. if not, then you don't have that directory on the server or probably the user you are using to connect doesn't have access to that directory. Hope that helps.

      Delete
    2. This comment has been removed by the author.

      Delete
  4. www.monstaftp.com offers SFTP/SCP as well as normal FTP through a web-based client that's free to download. (disclaimer: I'm involved with this project)

    ReplyDelete

Leadership 101


  • Leadership demands sacrifices for the near-term to receive lasting benefits. the longer we wait to make sacrifices, the harder they become. Successful people make important decisions early in their life, then manage those decisions the rest of their lives.
  • Growth does not happen by chance. If you want to be sure to grow, you need a plan something strategic, specific, and scheduled. it's a discipline that would need incredible determination from us.
  • Success comes by going the extra mile, working the extra hours, and investing the extra time. The same is true for us. If we want to get to excel in any segment of life, a little extra effort can help. Our efforts can go a long way if we only work a little smarter, listen a little better, push a little harder, and persevere a little longer.
  • Making a difference in your work is not about productivity; it's about people. When you focus on others and connect with them, you can work together to accomplish great things.
  • Envision a goal you'd like to reach. Make it big enough to scare you a little. Now write down a plan for moving toward it. Create mini-goals within the big goal, to set yourself up for continual progress. And include some risks, too. Set yourself up for success.
  • Leaders build margins, not image. A leader may be forced to take unpopular stands for the good of the company. Popularity isn't bad, but decisions made solely on the basis of popular opinion can be devastating. So take courage and make the right though sometimes painful choices.