Подавление вывода из вызовов exec () в PHP

У меня есть ряд сценариев командной строки в PHP, которые используютExec () выполнять такие задачи, как перезапуск служб, загрузка файлов часового пояса MySQL и т. д. Хотя само exec () ничего не выводит на экран, некоторые команды, которые я выполняю, вынуждают выводить данные, которые я не могу подавить (даже при использовании ob_start). () / ob_end_clean ()). Например, следующее будет загружать файлы часовых поясов в MySQL. Мы периодически запускаем это, чтобы убедиться, что данные о часовом поясе MySQL обновлены:

 $command = 'mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql';
 exec($command, $output, $result);

В этом примере я ожидаю, что весь вывод команды будет записан в $ output, но я все равно получаю следующий вывод на экран:

Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh87' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh88' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh89' as time zone. Skipping it.
...

Есть ли способ подавить этот вывод? Перенаправление в / dev / null не является идеальным, поскольку это заставит PHP продолжить обработку, не дожидаясь завершения команды.

Заранее спасибо,
~ JamesArmes

Ответы на вопрос(4)

Ваш ответ на вопрос