PHP SFTP / SSH传输

时间:2011-06-22 12:18:01

标签: php ssh sftp transfer

我刚刚发布了一个问题,但我问过FTP,这是一个错误的问题(doh!)。我需要使用SFTP / SSH自动将图像(例如test.jpg)从一台服务器传输到另一台服务器。

有人可以解释我会怎么做?我对这种事情是全新的,所以尽可能多的信息将非常受欢迎。

感谢您的帮助

<?php

$local_file = "http://localhost/ftptest/logo.png";
$remote_file = "/logo.png";

exec("scp $local_file username:pass@***.**.238.87:$remote_file");

?>

编辑:

最后我发现这有效:

<?php

     include('Net/SFTP.php');

     $image = 'logo.jpg'; //image to be uploaded - needs to be in the same directory as this script e.g. just logo.jpg

     $image_contents = file_get_contents($image); // location of image to be uploaded

     $sftp = new Net_SFTP('***.**.**.**'); // server address to connect to
     if (!$sftp->login('***', '***')) { // server login details
         exit('Login Failed');
     }

     echo $sftp->pwd();
     $sftp->put($image, $image_contents); // upload a file $image with the image contents.

?>

无法使SSH工作,但希望这将有助于未来的人:)

3 个答案:

答案 0 :(得分:2)

处理此问题的一种简单方法是调用PHP exec并执行unix scp调用。

exec("scp $local_file user1@somehost:$remote_file");

答案 1 :(得分:2)

在这种情况下,您没有提供有关您要实现的目标或限制的大量信息。

图像来自哪里?它需要多快复制一次?服务器是集群中的等效节点吗?

由于两台服务器都在谈论HTTP,为什么要使用不同的协议来传输内容?

正如安东尼奥建议你可以简单地执行scp - 但是只有你设置了密钥对才会起作用。

更灵活的解决方案(假设需要ssh)将使用ssh bindings in PHP

答案 2 :(得分:1)

您可以尝试ssh2_scp_send

$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644);