Php 使用laravel SSH将文件上载到另一台服务器
修订: 我有一个上传的文件,我想移动到我的另一个服务器上,用另一个应用程序进行处理。我认为最好的方法是使用内置在Laravel中的SSH,但事实证明这是一个令人头痛的问题 在我的配置文件(remote.php)中,我已经使用SSH密钥成功地建立了与其他服务器的连接。我通过跑步来测试这一点Php 使用laravel SSH将文件上载到另一台服务器,php,laravel,ssh,upload,Php,Laravel,Ssh,Upload,修订: 我有一个上传的文件,我想移动到我的另一个服务器上,用另一个应用程序进行处理。我认为最好的方法是使用内置在Laravel中的SSH,但事实证明这是一个令人头痛的问题 在我的配置文件(remote.php)中,我已经使用SSH密钥成功地建立了与其他服务器的连接。我通过跑步来测试这一点 SSH::run(['cd /var/www/html', 'ls'], function($line) { echo $line . PHP_EOL; }); 它给了我远程服务器上/va
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::put($file->getRealPath(), '/var/www/html/uploads/' . $file->getFilename());
我想你需要SSH::into($connectionName)->put(…)
我也试过了,但还是不行。文档建议传递UploadedFile对象不起作用,你需要调用->getRealPath()
,所以你提供了文件的本地路径(而不是对象),以及您希望存储该文件的远程路径。尝试了该操作后,我运行了一个示例命令来创建一个文件,SSH正在工作。我正在运行Windows的本地主机上执行此操作。这是否适用于laravel 5.4?没有5.4