Schlagwort-Archiv: error_log

E-Mail bei PHP Fehlern auf Livesystemen

Leider treten auch bei gut getesteten Webanwendungen immer wieder irgendwelche Laufzeit-Fehler auf. Üblicherweise sollte man diese Fehler nicht dem Benutzer der Anwendung anzeigen. Der Benutzer könnte aus den Fehlern möglicherweise Rückschlüsse über den Aufbau der Anwendung ziehen und dadurch potentielle Sicherheitslücken erkennen und ausnutzen. Die einfachste Variante das zu verhindern ist wohl das PHP Error Log erst einmal komplett mit display_errors = Off auszuschalten.

Ein erster Schritt ist damit getan, aber damit sieht nicht nur der Endanwender die Fehler nicht, sondern auch der Entwickler der diese – hoffentlich gerne – beheben würden (so die Zeit es denn zulässt…). Nungut, dafür gibt einem PHP schon mal die Möglichkeit mit log_errors = On mitzuschreiben. Mit error_log = /tmp/phperrors_apache.log kann die Datei ausgewählt werden. Man sollte dabei je nach Webserver-Konfiguration auch darauf achten, dass der PHP-User (meistens der User der den Webserver auch ausführt) die Datei auch schreiben kann. Der Einfachheit halber habe ich dafür /tmp gewählt, das klappt in jedem Fall.
Um die Fehler aber nicht nur mit zu schreiben, sondern auch regelmäßig per E-Mail zugestellt zu bekommen, nutze ich ein kleines E-Mail Skript von James Caws. Das Skript habe ich leicht modifiziert, sodass ich die Logdatei und das Subject als Parameter beim Aufruf mit angeben kann. Für einfache Setups ist das aber nicht nötig. Hat man die Konfiguration oben im Skript angepasst, kann man einen Eintrag in seiner Crontab vornehmen die das Skript z.B. minütlich ausführt.
Der Eintrag kann dann beispielsweise so aussehen:
* * * * * php /root/error_log_sender.php.

Schon bald dürften dann die ersten E-Mails ankommen :-).

PS: Bei sehr vielen E-Mails empfiehlt es sich ein gemeinsames IMAP-Postfach für alle Entwickler zu erstellen. Möglicherweise auch auf einem separaten E-Mail Server ohne irgendwelche aufwendigen Filterungen, damit die E-Mails auch schnell ankommen.