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