2017-12-14 4 views
0

Ich führe SSH in Laravel durch, wobei ich mich mit einem anderen Server verbinde und eine Datei herunterlade. Ich verwende Laravel Collective https://laravelcollective.com/docs/5.4/sshLaravel Collective SSH Ergebnisse

die vorgeschlagene Art und Weise also, dies zu tun, so etwas wie dieses Jetzt

$result = \SSH::into('scripts')->get('/srv/somelocation/'.$fileName, $path); 

if($result) { 
    return $path; 
} else { 
    return 401; 
} 

ist, dass die Datei erfolgreich heruntergeladen und verschiebt sie in meinem lokalen Server. Ich gebe aber immer 401 zurück, weil $ result Null zu sein scheint.

Ich kann nicht viel finden oder das Ergebnis zurück von der SSH bekommen. Ich habe auch versucht

$result = \SSH::into('scripts')->get('/srv/somelocation/'.$fileName, $path, function($line){ 
    dd($line.PHP_EOL); 
}); 

Aber das kommt nie in die innere Funktion.

Gibt es eine Möglichkeit, das Ergebnis vom SSH zurück zu bekommen? Ich möchte es nur richtig behandeln, wenn ein Fehler auftritt.

Dank

+2

bessere Nutzung PHPSecLib, verwenden Sie die Net2-Klasse und SSH, erhalten Sie interaktive Ergebnisse, wie Sie in der Konsole erhalten und Sie können Konsole auch im Web erstellen. Ich habe phpseclib benutzt und jedes Mal, wenn ich irgendeinen ssh Befehl oder irgendein Ding feuere, erhalte ich genaues Ergebnis. Ich habe mit Laravel 5.3 und 5.4 verwendet – webDev

Antwort

0

Anstatt sich auf $result verlassen Sie true/false/Fehler zu geben, Sie, wenn die Datei in einer anderen Art und Weise erfolgreich heruntergeladen wurde überprüfen:

// 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; 
} 
Verwandte Themen