PHP SSH命令使用phpseclib

时间:2017-07-29 10:58:50

标签: php ssh 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>";

如果我直接从终端运行它,该命令可以正常工作。

有什么想法吗?

1 个答案:

答案 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就消失了   已被删除。

     

您可以通过$ssh->exec('cd /; pwd')

在Linux上解决此问题