Перехват вывода «nginx -t» с помощью php [closed]

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

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

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

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

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