Unterdrücken der Ausgabe von exec () -Aufrufen in PHP

Ich habe eine Reihe von Befehlszeilenskripten in PHP, die verwendenexec () Zum Ausführen von Aufgaben wie Neustarten von Diensten, Laden von MySQL-Zeitzonendateien usw. Während exec () selbst nichts auf dem Bildschirm ausgibt, erzwingen einige der von mir ausgeführten Befehle eine Ausgabe, die ich anscheinend nicht unterdrücken kann (auch nicht mit ob_start) () / ob_end_clean ()). Das Folgende würde beispielsweise Zeitzonendateien in MySQL laden. Wir führen dies regelmäßig durch, um sicherzustellen, dass die Zeitzonendaten von MySQL auf dem neuesten Stand sind:

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

In diesem Beispiel würde ich erwarten, dass alle Ausgaben des Befehls in $ output geschrieben werden, aber ich erzwinge immer noch die folgende Ausgabe auf dem Bildschirm:

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

Gibt es eine Möglichkeit, diese Ausgabe zu unterdrücken? Die Umleitung nach / dev / null ist nicht ideal, da PHP dadurch die Verarbeitung fortsetzen kann, ohne auf den Abschluss des Befehls zu warten.

Danke im Voraus,
~ JamesArmes

Antworten auf die Frage(4)

Ihre Antwort auf die Frage