【发布时间】:2014-07-18 15:50:33
【问题描述】:
修订:
我有一个上传的文件,我想将它移动到我的其他服务器,以便与其他应用程序一起处理。我认为最好的方法是使用 Laravel 中内置的 SSH,但事实证明这很让人头疼。
在我的配置文件 (remote.php) 中,我已经使用 SSH 密钥成功地建立了与其他服务器的连接。我通过运行测试了这个
SSH::run(['cd /var/www/html', 'ls'], function($line) {
echo $line . PHP_EOL;
});
它给了我远程服务器上/var/www/html/ 中的文件列表。一切似乎都很好,对吧?
现在我想使用SSH::put() 将我上传的文件上传到远程服务器。我用过:
SSH::put($file->getRealPath(), '/var/www/html/uploads');
你猜怎么着?它运行没有错误,所以我认为它已成功上传。当我检查远程服务器上的那个目录时,它是空白的。我试图在/var/www/html/uploads 上将文件权限设置为 777,以查看这是否是权限问题,同样的事情 - 没什么。
我还尝试使用SSH::get() 从我的远程服务器下载文件,它运行成功。
这是$file->getRealPath() 上的转储:
string(14) "/tmp/phpikt2mg"
两台机器都运行 Centos,并且在两端都注册了它们的公钥。
【问题讨论】:
-
我觉得你需要
SSH::into($connectionName)->put(...) -
我也试过了,还是不行。
-
文档建议传递 UploadedFile 对象将不起作用,您需要调用
->getRealPath(),因此您提供文件的本地路径(而不是对象),并且您希望存储它的远程路径。 -
试过了,什么也没有,我运行了一个示例命令来创建一个文件并且 SSH 正在工作。
-
我在运行 Windows 的本地主机上执行此操作