我刚才发布了一个问题,但我问的是 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 正常工作,但希望这对将来的人有所帮助:)
最佳答案
这里的情况很常见,您没有提供太多有关您要实现的目标或限制的信息。
图像来自哪里?它需要多快被复制?服务器是集群中的等效节点吗?
既然两台服务器都在使用 HTTP,为什么要使用不同的协议(protocol)来传输内容?
正如 Antonio 所建议的,您可以简单地执行 scp - 但这只有在您设置了 key 对时才有效。
一个更灵活的解决方案(假设需要 ssh)是使用 ssh bindings in PHP
关于PHP SFTP/SSH 传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6439668/