2017-07-29 11 views
0

私はhttp://phpseclib.sourceforge.net/を使用して自分のSSHに接続し、自分のノードサーバーのコマンドを実行しています。phpseclibを使用したPHP SSHコマンド

使用して完璧に働いてその:

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

は、しかし、すぐに私はそれが何も表示されたり、何も実行しません。次のコードを使用して:私は実行する場合

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>"; 

をコマンドは完璧に動作それは端末からダイレクト。

EXECコマンドへ

答えて

0

http://phpseclib.sourceforge.net/ssh/examples.html#chdirを引用し、

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

連続して呼び出す()

インタラクティブシェルで行われている場合、あなたは 最初の障害者のために受信したい出力は(に応じてしまいますあなたのシステムがどのようにセットアップされているか)は、 と2番目のpwdの出力とは異なっているはずです。ただし、上記のコードスニペットでは、 は2つの同一の行を生成します。

この理由は、 ワンタイムシェルに行った「状態変更」は、exec()が実行され、チャネル が削除された後に消えてしまうためです。

あなたは$ssh->exec('cd /; pwd')

を行うことで、Linux上でこの問題を回避することができます
関連する問題