我正在服务器上自动安装多个 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 .
鉴于此,我有两个想法。
尝试使用 PTY。例如。
$ssh->enablePTY(); $ssh->exec('passwd'); echo $ssh->read();
在执行
write("command\n")
之后,您是否正在执行$ssh->read('[prompt]');
?您可能需要读取流才能实际运行命令。
关于php - 使用 phpseclib 通过 SSH 运行 wp-cli 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36367621/