Я автоматизирую установку нескольких блогов 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, чтобы сделать это для нескольких доменов на сервере, так как приходят новые клиенты.
Вероятно, необходимо определить путь к PHP. Когда вы работаете с обычным SSH-клиентом, он, вероятно, работает Файлы инициализации Bash.
В свете этого у меня есть две мысли.
Попробуйте использовать PTY. например.
$ssh->enablePTY();
$ssh->exec('passwd');
echo $ssh->read();
Больше информации: http://phpseclib.sourceforge.net/ssh/pty.html
Ты делаешь $ssh->read('[prompt]');
после выполнения write("command\n")
? Возможно, вам придется прочитать поток, чтобы получить команду, которая будет фактически запущена.
Других решений пока нет …