我正在使用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>";
如果我直接从终端运行它,该命令可以正常工作。
有什么想法吗?
答案 0 :(得分: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
连续调用exec()
如果在交互式shell上完成,则会收到您收到的输出 第一个pwd(取决于你的系统设置方式)会有所不同 比第二个pwd的输出。但是,上面的代码片段 将产生两条相同的线。
这样做的原因是任何&#34;状态改变&#34;你做到了 一旦运行了exec()和通道,一次性shell就消失了 已被删除。
您可以通过
在Linux上解决此问题$ssh->exec('cd /; pwd')