php - 作曲家:在 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
。我已经花了 2 天时间,但无法解决任何这些问题。小小的帮助将不胜感激。提前致谢 :)
解决方案
对于 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/
推荐阅读
- arrays - 为什么数组的大小比括号内的元素长?
- .net-core - .Net Core 3.1 应用程序无法启动,因为 Windows 服务手动启动会出现 1053 错误
- gtk3 - 获取给定项目索引的文本 GtkComboBoxText
- r - 用 flextable() 正确对齐页脚
- javascript - 从nodejs插入日期值到mongodb
- c# - 当用户在浏览器中单击返回时,C# 防止插入数据库
- java - ServerBeginResponse 和 GotResponseHeaders 之间的延迟
- php - 为什么日文输入的修剪功能无法正常工作?
- reactjs - 如何将 useEffect 重构为 onlick 函数
- r - 如何在 R 中写出这个总和?