Fabian St.: Mit Shell-CGI-Skript in error_log schreiben?

Beitrag lesen

Hi Christoph!

Ist es möglich, dass ein mittels CGI gestartetes bash-Skript in die error_log-Datei des Apache schreibt?

Prinzipiell ja. Ob es allerdings sinnvoll ist, bleibt zu überlegen.

Warum sollte das nicht sinnvoll sein? Für eventuelles Debugging oder unerwartete Fehler ist dieses Vorgehen sehr wohl sinnvoll. Im Übrigen macht es dieses Forum mit den ganzen CGI-Programmen fo_view, fo_post, fo_arcview, etc. genauso.

Mit echo >> /dev/stderr blabla funktioniert es nicht.

STDERR ist die Standardausgabe, für die meines Wissens kein "Gerät", also "/dev/Gerätename" benötigt wird. Sie ist flüchtig, das heißt, da wird nichts gespeichert. Allerdings kannst du sie auslesen und die Daten speichern. Versuche erstmal, etwas in irgendein Testlog, beispielsweise /var/logs/testlog, einzutragen. Wenn das klappt, kannst du ja dann den tatsächlich gewünschten Log-Namen stattdessen einsetzen.

Das ist leider falsch. STDERR ist die Standard_Fehler_Ausgabe, wohingegen STDOUT die Standardausgabe  darstellt. Mit sogenannten «Output Redirection» ist es demnach möglich einen entsprechenden Effekt zu erzielen:

echo "Es trat ein Fehler im Skript $0 auf!" 1>&2

Dadurch wird STDOUT (1) nach STDERR (2) umgelenkt und folgende Zeile erscheint dann im Error-Log des Apache:

[Sat Jul 16 15:44:17 2005] [error] [client 192.168.0.21] Es trat ein Fehler im Skript test.cgi auf!

Grüße,
Fabian St.