我在Laravel中执行SSH,我连接到另一台服务器并下载文件。我正在使用Laravel Collective https://laravelcollective.com/docs/5.4/ssh
所以,建议的方法是这样的
$result = \SSH::into('scripts')->get('/srv/somelocation/'.$fileName, $path);
if($result) {
return $path;
} else {
return 401;
}
现在成功下载文件并将其移至本地服务器。但是,我总是返回401,因为$ result似乎是Null。
我找不到或从SSH获得结果。我也试过
$result = \SSH::into('scripts')->get('/srv/somelocation/'.$fileName, $path, function($line){
dd( $line.PHP_EOL);
});
但是这永远不会进入内在的功能。
有什么方法可以从SSH获得结果吗?如果出现错误,我只想正确处理它。
由于
答案 0 :(得分:0)
您可以检查文件是否以其他方式成功下载,而不是依赖于$result
给您true
/ false
/错误:
// download the file
$result = \SSH::into('scripts')->get('/srv/somelocation/'.$fileName, $path);
// see if downloaded file exists
if ( file_exists($path) ) {
return $path;
} else {
return 401;
}
答案 1 :(得分:0)
u还需要在get和put方法中传递类似的文件名:
$fileName = "example.txt";
$get = \SSH::into('scripts')->get('/remote/somelocation/'.$fileName, base_path($fileName));
设置方法
$set = \SSH::into('scripts')->set(base_path($fileName),'/remote/location/'.$fileName);
在列表中
$command = SSH::into('scripts')->run(['ls -lsa'],function($output) {
dd($output);
});