У меня есть ряд сценариев командной строки в 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