作曲家:在phpseclib SSH2中找不到命令

我已使用phpseclib连接到服务器,我想在一个特定的文件夹中运行3个命令,但是该库中遇到了几个问题。 1 我正在 stdin: is not a tty bash: 每个命令后的错误。我做了谷歌,找到一个解决方案来添加 $ssh->enablePTY();,然后我看不到我的输出返回1或0。 2 添加$ ssh-> enablePTY()之后;当我尝试运行另一个命令时,我面临

If you want to run multiple exec()'s you will need to disable (and re-enable if appropriate) a PTY for each one

因此,我在每个命令的前后都添加了$ssh->enablePTY();$ssh->disablePTY();,然后我只能看到1和0,而不是我的命令的输出。

3 我要在如此执行的特定文件夹中连续运行3个命令

echo $ssh->exec('cd /home/my/public_html/testmags/; composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition /home/my/public_html/testmags/');

但我正面临composer: command not found。 我花了两天的时间,但无法解决任何这些问题。 小小的帮助将不胜感激。 在此先感谢:)

cherrryving 回答:作曲家:在phpseclib SSH2中找不到命令

对于PTY,您需要在$ssh->read()之后执行$ssh->exec()。原因是PTY启用了交互性。例如。

$ssh->enablePTY();
$ssh->exec('passwd');
echo $ssh->read('password:');
$ssh->write("badpw\n");
echo $ssh->read('password unchanged');

根据命令的不同,您可以做的一件事就是将它们链接起来。例如。 $ssh->exec('cmd1; cmd2; cmd3');$ssh->exec('cmd1 && cmd2 && cmd3');

但我正面临composer: command not found

您已安装作曲家吗? $ssh->exec('echo $PATH'); echo $ssh->read();说什么?它是否包括(全局)安装Composer的路径(如果确实已安装?)。对于https://getcomposer.org/doc/00-intro.md#globally,如果已全局安装,则可能位于/usr/local/bin/

本文链接:https://www.f2er.com/2673442.html

大家都在问