[英]PHP SSH Commands Using phpseclib
我正在使用http://phpseclib.sourceforge.net/連接到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>";
如果我直接從終端運行該命令,則該命令會完美運行。
任何想法?
引用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
連續調用exec()
如果在交互式Shell上完成,則第一個密碼的輸出(取決於系統的設置)將與第二個密碼的輸出不同。 但是,以上代碼段將產生兩條相同的行。
原因是一旦運行exec()並刪除通道后,您對一次性shell所做的任何“狀態更改”都將消失。
您可以在Linux上通過執行
$ssh->exec('cd /; pwd')
解決此問題$ssh->exec('cd /; pwd')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.