Я пытаюсь сделать простую панель управления для моего веб-сервера, на котором запущен nginx с php-fpm.
Мне удалось поймать результат service php5-fpm restart
и service nginx reload
, но вывод из nginx -t
явно не работает работают так же?
Я пробовал использовать $ out = shell_exec ('nginx -t');
, как я использую в двух других примерах выше. Но когда я запускаю сценарий, он просто выводит результат, а переменная $ out
имеет значение null.
Я также пробовал с shell ()
с использованием выходного аргумента и popen ()
в сочетании с fread ()
, но результат тот же .
Я хочу обновить поле в моей базе данных mysql с результатом nginx -t
.
Есть ли способ сделать это?
Это больше вопрос о программировании, чем о Ubuntu, поэтому он, вероятно, должен быть переполнен стеком.
Однако ваша проблема, вероятно, заключается в том, что ошибки не обнаруживаются, потому что вы запрашиваете STDOUT, а ошибки выводятся в STDERR.
Есть два возможных решения.
Во-первых, использовать функцию php для захвата STDERR. Я не знаю достаточно php, чтобы ответить на это.
Во-вторых, направить STDERR в STDOUT. Run
nginx -t 2>&1
Это говорит оболочке переместить все записанное в STDERR в STDOUT.
Для получения дополнительной информации о файловых потоках и, в частности, о stderr: http://en.wikipedia.org/wiki/Standard_streams#Standard_error_.28stderr.29