WP-CLI может корректно работать только под PHP cli
SAPI, а не под API веб-сервера, таким как cgi
, apache
или аналогичным. У этого есть некоторые технические причины, но это также напрямую связано с безопасностью вашего сервера.
WP-CLI - это консольное приложение
Первая техническая причина заключается в том, что WP-CLI является консольным приложением и предполагает доступ к входным (STDIN
) и выходным (STDOUT
) потокам консоли. В контексте веб-сервера, под которым работает WordPress, они не существуют. «Входными данными» для веб-сервера является URL-адрес и полезная нагрузка веб-запроса, а выходными данными является HTML или JSON, который отправляется обратно в браузер.
WP-CLI - это оболочка для WordPress
Вторая техническая причина заключается в том, что WP-CLI по сути является «хаком», который «оборачивает» всю установку WordPress и выполняет ее как подпрограмму в своем собственном процессе. Если вы попытаетесь использовать WordPress для запуска WP-CLI, у вас возникнет проблема «курица и яйцо» или программная интерпретация «Начало».
WP-CLI - это инструмент sysadmin
Причина, по которой это также имеет непосредственное отношение с точки зрения безопасности, заключается в том, что WP-CLI в широком смысле является инструментом sysadmin. Он будет напрямую создавать, изменять, удалять файлы, делать прямые запросы к базе данных и многое другое. Все его операции могут обходить любые меры безопасности, которые могли быть введены в действие на уровне приложения WordPress и его плагинами. Если сделать WP-CLI доступным для внешнего интерфейса и активировать его с помощью веб-запросов, это превратит его в критическую уязвимость безопасности. Никакой инструмент администрирования на стороне сервера не должен быть открыт для внешнего интерфейса каким-либо образом.
Надеюсь, это объясняет, почему то, что вы хотите сделать, не может быть сделано, и почему вы не захотите, если можете.