Поймать вывод из «nginx -t» с php [закрыто]

Я пытаюсь создать простую панель управления для моего веб-сервера под управлением nginx с php-fpm.

Мне удалось поймать результаты service php5-fpm restart и service nginx reload, но вывод из nginx -t, по-видимому, не работает так же?

Я пробовал с $out = shell_exec('nginx -t');, как я использую для других 2 примеров выше. Но когда я запускаю скрипт, он просто выводит результат, а переменная $out равна нулю.

Я также пытался с shell() использовать выходной аргумент и popen() в сочетании с fread(), но это один и тот же результат.

То, чего я хочу достичь, это обновить поле в моей базе данных mysql с результатом nginx -t.

Есть ли способ сделать это?

1
задан 11 February 2014 в 23:25

1 ответ

Это больше вопрос о программировании, чем о 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

0
ответ дан 11 February 2014 в 23:25

Другие вопросы по тегам:

Похожие вопросы: