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

标签 php ssh phpseclib wp-cli

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

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

当我做类似的事情时:

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

我会得到:

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

尽管我可以在正常的 ssh session 中正常运行它...

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

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

系统是Ubuntu 14.04...

有什么想法吗?

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

最佳答案

可能需要定义 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]');?您可能需要读取流才能实际运行命令。

关于php - 使用 phpseclib 通过 SSH 运行 wp-cli 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36367621/

相关文章:

javascript - 使用 PHP 使用 Cryptico 公钥加密消息

phpseclib 与 libssh2

java - 如何RSA验证在php中生成的java中的签名

php - 从 google maps api 结果中删除重复的地址

PHP: PDO bindValue() 导致返回 0 个结果

php - 使用 php 从 html 生成图像

php - 从 View 调用模型 (Codeigniter)

linux - ssh 命令引用有什么区别?

macos - 从 Mac SSH 连接时,Page Up 和 Page Down 在 tmux 中不起作用

docker - 编辑正在运行的Docker容器