我刚刚发布了一个问题,但我问过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工作,但希望这将有助于未来的人:)
答案 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);