【问题标题】:composer: command not found in phpseclib SSH2 [closed]作曲家:在phpseclib SSH2中找不到命令[关闭]
【发布时间】:2020-06-22 00:44:13
【问题描述】:

我已经使用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 天时间,但无法解决任何这些问题。 小小的帮助将不胜感激。 提前致谢:)

【问题讨论】:

  • 要在另一台服务器上运行composer,您是否检查过它是否已安装?如果是,您是否检查过它是否存在于给定文件夹中?
  • 我已经使用 PUTTY 连接了我的服务器。Composer 命令在那里工作,但使用这个库它没有显示在那里。

标签: php ssh server phpseclib ssh2


【解决方案1】:

对于 PTY,您需要在 $ssh->exec() 之后执行 $ssh->read()。原因是 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/

【讨论】:

    猜你喜欢
    • 2016-03-05
    • 2017-06-20
    • 2014-09-21
    • 2021-06-14
    • 2019-08-01
    • 2017-05-31
    • 2018-01-29
    • 2018-10-04
    • 2017-02-06
    相关资源
    最近更新 更多