2

我正在自动在服务器上安装多个 WordPress 博客。基本上,我需要运行多个 wp-cli 命令。

使用 phpseclib 和做exec(),不起作用......

当我做类似的事情时:

$ssh->exec('wp core download');

我会得到:

/usr/bin/env: php: 没有这样的文件或目录

即使我可以很好地运行它,但在正常的 ssh 会话中......

如果我尝试$ssh->write执行命令并执行 '\n' 它似乎什么也没做。即使我只是尝试执行一个简单的命令,例如:touch foo.txt

尽管该测试“触摸”命令将与 exec 一起使用...

系统是 Ubuntu 14.04...

有任何想法吗?

随着新客户的涌现,我必须通过 PHP 的 SSH 连接服务器上的多个域来执行此操作。

4

1 回答 1

2

可能需要定义 PHP 的路径。当您使用常规 SSH 客户端进行 SH 时,它可能正在运行任意数量的Bash 初始化文件

鉴于此,我有两个想法。

  1. 尝试使用 PTY。例如。

    $ssh->enablePTY(); 
    $ssh->exec('passwd'); 
    echo $ssh->read();
    

    更多信息: http: //phpseclib.sourceforge.net/ssh/pty.html

  2. 做完$ssh->read('[prompt]');之后还在做write("command\n")吗?您可能需要阅读流以获取实际运行的命令。

于 2016-04-02T06:08:28.723 回答