Запуск команд wp-cli через SSH с помощью phpseclib

Я автоматизирую установку нескольких блогов 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, чтобы сделать это для нескольких доменов на сервере, так как приходят новые клиенты.


person DonVF    schedule 01.04.2016    source источник
comment
Кстати, я попробовал exec, используя полный путь к wp-cli, который настроен как wp в /usr/local/bin.   -  person DonVF    schedule 02.04.2016


Ответы (1)


Путь к PHP, вероятно, должен быть определен. Когда вы подключаетесь к обычному клиенту SSH, он, вероятно, выполняет любое количество инициализации Bash. файлы.

В связи с этим у меня есть две мысли.

  1. Попробуйте использовать PTY. например.

    $ssh->enablePTY(); 
    $ssh->exec('passwd'); 
    echo $ssh->read();
    

    Дополнительная информация: http://phpseclib.sourceforge.net/ssh/pty.html

  2. Вы делаете $ssh->read('[prompt]'); после выполнения write("command\n")? Вам может понадобиться прочитать поток, чтобы заставить команду действительно выполняться.

person neubert    schedule 02.04.2016