运行 wp-cli 命令通过带有 phpseclib 的 SSH

Running wp-cli commands through SSH with phpseclib

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

使用 phpseclib 并执行 exec(),不起作用...

当我做类似的事情时:

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

我会得到:

/usr/bin/env: php: No such file or directory

尽管我可以 运行 没问题,但在正常的 ssh 会话中...

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

尽管该测试 "touch" 命令将与 exec 一起使用...

系统是Ubuntu14.04...

有什么想法吗?

随着新客户的加入,我必须从 PHP 通过 SSH 连接才能为服务器上的多个域执行此操作。

可能需要定义 PHP 的路径。当您使用常规 SSH 客户端 SH 时,它可能 运行ning 任意数量的 Bash initialization files.

鉴于此,我有两个想法。

  1. 尝试使用 PTY。例如

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

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

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