Suprimiendo la salida de las llamadas exec () en PHP

Tengo una serie de scripts de línea de comandos en PHP que utilizoexec () para realizar tareas como reiniciar servicios, cargar archivos de zona horaria de MySQL, etc. Aunque exec () no genera nada en la pantalla, algunos de los comandos que estoy ejecutando están forzando una salida que parece que no puedo suprimir (incluso con ob_start () / ob_end_clean ()). Por ejemplo, lo siguiente cargaría archivos de zona horaria en MySQL. Ejecutamos esto periódicamente para asegurarnos de que los datos de la zona horaria de MySQL estén actualizados:

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

En este ejemplo, esperaría que toda la salida del comando se escribiera en $ output, pero todavía tengo la siguiente salida forzada a la pantalla:

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.
...

¿Hay alguna manera de suprimir esta salida? Redirigir a / dev / null no es ideal, ya que eso haría que PHP continúe procesando sin esperar a que se complete el comando.

Gracias por adelantado,
~ James Armes

Respuestas a la pregunta(4)

Su respuesta a la pregunta