使用phpseclib通过SSH运行wp-cli命令

时间:2016-04-01 23:55:47

标签: php ssh phpseclib wp-cli

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

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

当我做类似的事情时:

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

我会得到:

  

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

即使我能在正常的ssh会话中运行良好......

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

虽然测试“touch”命令可以与exec一起使用...

系统是Ubuntu 14.04 ......

有什么想法吗?

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

1 个答案:

答案 0 :(得分:2)

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

鉴于此,我有两个想法。

  1. 尝试使用PTY。例如

    String

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

  2. 您在执行$ssh->enablePTY(); $ssh->exec('passwd'); echo $ssh->read(); 后正在进行$ssh->read('[prompt]');吗?您可能需要读取流以获取实际运行的命令。