【问题标题】:Using laravel SSH to upload files to another server使用 laravel SSH 将文件上传到另一台服务器
【发布时间】: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 的本地主机上执行此操作

标签: php laravel ssh upload


【解决方案1】:

我有点晚了,但刚刚遇到同样的问题,终于找到了失败的原因!所以它可以为其他人节省一些时间。

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

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

【讨论】:

  • 这适用于 laravel 5.4 吗?
  • 5.4 没有特使跑者
猜你喜欢
  • 2017-01-23
  • 2011-11-05
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多