【问题标题】:Running wp-cli commands through SSH with phpseclib使用 phpseclib 通过 SSH 运行 wp-cli 命令
【发布时间】:2018-09-17 20:48:12
【问题描述】:

我正在自动在服务器上安装多个 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 连接服务器上的多个域。

【问题讨论】:

  • 附带说明,我尝试使用 wp-cli 的完整路径执行 exec,该路径在 /usr/local/bin 中设置为 wp

标签: php ssh phpseclib wp-cli


【解决方案1】:

可能需要定义 PHP 的路径。当您使用常规 SSH 客户端进行 SH 时,它可能正在运行任意数量的 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]'); 吗?您可能需要读取流才能真正运行命令。

【讨论】:

    猜你喜欢
    • 2016-02-17
    • 1970-01-01
    • 2016-12-10
    • 2010-10-08
    • 2011-01-25
    • 1970-01-01
    • 2014-04-07
    • 2015-07-24
    • 1970-01-01
    相关资源
    最近更新 更多