2017-07-29 3 views
0

Ich verwende http://phpseclib.sourceforge.net/, um eine Verbindung zu meinem SSH herzustellen und einige Befehle für meinen Node-Server auszuführen.PHP SSH-Befehle Verwenden von phpseclib

Seine gut funktionierend mit:

echo "Restart...<br>"; 
echo "<pre>"; 
echo $ssh->exec('forever restartall'); 
echo "</pre>"; 

aber sobald ich den folgenden Code verwenden es nichts anzeigt oder etwas laufen:

echo "Starting...<br>"; 
echo "<pre>"; 
echo $ssh->exec('cd /var/www/html/game-api'); 
echo $ssh->exec('forever start server.js > stdout.txt 2> stderr.txt &'); 
echo "</pre>"; 

Der Befehl funktioniert perfekt, wenn ich laufen es direkt vom Terminal aus.

Irgendeine Idee?

Antwort

0

http://phpseclib.sourceforge.net/ssh/examples.html#chdir Zitiert,

echo $ssh->exec('pwd'); // outputs /home/username 
$ssh->exec('cd /'); 
echo $ssh->exec('pwd'); // (despite the previous command) outputs /home/username 

Sukzessive Anrufe() exec

Wenn auf einer interaktiven Shell getan, die Ausgabe, die Sie für die ersten PWD erhalten würde würde (je nach wie Ihr System eingerichtet ist) unterschiedlich sein als die Ausgabe der zweiten pwd. Das obige Code-Snippet jedoch ergibt zwei identische Zeilen.

Der Grund dafür ist, dass alle "Statusänderungen", die Sie an die einmalige Shell vornehmen, weg sind, nachdem die exec() ausgeführt wurde und der Kanal gelöscht wurde.

Sie können dies auf Linux umgehen $ssh->exec('cd /; pwd')

tun
Verwandte Themen