PHP: Wie schreibt man eine Nachricht auf die Konsole (stdout / stderr)

Sun, Nov 14, 2021 1 Minute zum Lesen

PHP kann in verschiedenen Kontexten ausgeführt werden. Beispielsweise als Kommandozeilenapplikation (CLI) oder als Apache Modul. Je nach Kontext verhalten sich die Funktionen fürs Logging unterschiedlich.

In diesem Blog Post betrachten wir das Szenario einer PHP-Applikation die eine REST-Schnittstelle bereistellt. Der PHP Code wird von PHP-FPM ausgeführt.

Nachrichten die man mit print oder echo ausgibt landen in diesem Fall direkt im Body der HTTP-Antwort. Um dafür zu sorgen, dass Nachrichten in diesem Szenario auf der Konsole landen muss man folgendes Konstrukt verwenden:

// write to stderr
file_put_contents( "php://stderr","---> file_put_contents stderr" );

// write to stdout
file_put_contents( "php://stdout","---> file_put_contents stdout" );

Bei stdout handelt es sich um den Standardausgabestrom eines Prozesses. Bei stderr handelt es sich um den Standardfehlerausgabestrom eines Prozesses. Beide Kanäle sind in der Regel mit der Konsole verknüpft. Weitere Details zu diesen Standard-Datenströmen findet ihr hier.

Hinweis zu Netcup (Werbung)

Der deutsche Hoster Netcup bietet unter anderem günstige und zugleich leistungsstarke Webhosting Pakete, KVM-basierte Root Server und dezidierte Server an. Mit unseren Gutscheincodes kannst du noch mehr Geld sparen (6€ bei deiner ersten Bestellung, 30% Rabatt auf alle KVM-basierten Root Server, ...).