使用laravel SSH将文件上传到另一台服务器


Using laravel SSH to upload files to another server

修订:

我有一个上传的文件,我想把它移到我的另一个服务器上,用另一个应用程序处理。我认为最好的方法是使用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,并且在两端都注册了公钥。

我迟到了一点,但只是面临着同样的问题,终于找到了失败的原因!因此,它可以为其他人节省一些时间。

您应该使用带filename的完整路径作为第二个参数,而不仅仅是文件夹的路径。对于这个问题,应该是

SSH::put($file->getRealPath(), '/var/www/html/uploads/' . $file->getFilename());