Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用laravel SSH将文件上载到另一台服务器_Php_Laravel_Ssh_Upload - Fatal编程技术网

Php 使用laravel 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

修订:

我有一个上传的文件,我想移动到我的另一个服务器上,用另一个应用程序进行处理。我认为最好的方法是使用内置在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::put($file->getRealPath(), '/var/www/html/uploads/' . $file->getFilename());

我想你需要
SSH::into($connectionName)->put(…)
我也试过了,但还是不行。文档建议传递UploadedFile对象不起作用,你需要调用
->getRealPath()
,所以你提供了文件的本地路径(而不是对象),以及您希望存储该文件的远程路径。尝试了该操作后,我运行了一个示例命令来创建一个文件,SSH正在工作。我正在运行Windows的本地主机上执行此操作。这是否适用于laravel 5.4?没有5.4