MeinWebworker
   MeinWebworker


   
Seit 1998   
 
Fehler in PHP abfangen und per Email weiterleiten

PHP-Fehlermeldungen sind für den Entwickler von außergewöhnlich großem Nutzen: Sie verraten, sofern nicht bewusst ausgeschaltet, in welcher Datei ein bestimmter Fehler aufgetreten ist. Auch die betroffene Zeile des Quellcodes erscheint in der Meldung.

Fehler abfangen
PHP-Fehlermeldungen können nur dann wirklich hilfreich sein, wenn der Programmierer sie auch zu Gesicht bekommt, um nach der Ursache zu forschen. Was ist aber, wenn die Mitteilung dem Besucher der Website präsentiert und die Ausführung des angeforderten Skriptes gestoppt wird, weil zum Beispiel die Datenbank nicht erreichbar ist oder ein Fehlverhalten im Script selbst vorliegt? Imageschädigend und peinlich – der Erzeuger der Anwendung kriegt die Panne gar nicht mit. An dieser Stelle springt das sogenannte „Error Handling“ ein.

Was steckt dahinter?
Das Prinzip der „Error Handler“ ist folgendermaßen aufgebaut. Wird beim Ausführen eines Skriptes ein Fehler entdeckt, ruft PHP eine zuvor definierte Funktion auf. Beim Aufruf werden bestimmte Werte übergeben, die weiterverarbeitet werden können. Die aufgerufene Funktion verschickt eine Email mit übergebenen Parametern an den Entwickler. Das Prinzip ist recht einfach, übersichtlich und modular.

Umsetzung
Mit dem Befehl set_error_handler(“getErrorHandler”); wird festgelegt, welche Funktion im Falle eines Fehlers angesprochen werden soll. Dabei ist zu beachten, diesen Aufruf zusammen mit der Funktion selbst, die unten noch ausführlicher beschrieben wird, möglichst in ersten Zeilen des Skriptes zu platzieren, damit die Fehlerroutine gleich nach dem Start die Überwachung übernimmt. Die Funktion set_error_handler() wird erst seit PHP 4.0.1 unterstützt.

Die eigentliche Funktion muss auf jeden Fall vor dem oben erwähnten set_error_handler-Aufruf deklariert werden. Sie können Sie entweder einfach davor einfügen oder, was viel eleganter ist, die Funktion zuvor „includen“. Der Grund ist eindeutig und klar: Eine Funktion muss bereits existieren, bevor sie angesprochen werden kann. Die Funktion könnte wie folgt lauten:

function getErrorHandler($errno,$errmsg,$filename,$linenum) {
  $error = “Zeit: ” .date(“Y-m-d H:i:s”). “n”;
  $error .= “Meldung: ” .$errmsg. “n”;
  $error .= “Datei: ” .$filename. “n”;
  $error .= “Zeile: ” .$linenum;
  mail(“Entwickler<entwickler@domain.tld>”, “Skript-Fehler aufgetreten”, $error, “From: Entwickler<entwickler@domain.tld>”);
}

Es werden wichtige Parameter, Fehlertyp, Fehlermeldung, Name der fehlerhaften Datei und die entsprechende Zeile, an die Funktion übergeben, die dann mit einem Kommentar versehen und an den Zuständigen verschickt werden. Ab sofort bekommt der Entwickler, nach Wunsch auch ein ganzes Entwicklungsteam, jeden Fehler auf der Website mit.

Weitere Anregungen
Natürlich kann die oben beschriebene Funktion beliebig und sinnvoll erweitert werden. So kann die Mitteilung an weitere Empfänger gerichtet werden. Auch können zusätzliche Informationen, wie zum Beispiel der Referer, übermittelt werden. Zudem kann man bestimmte Fehlertypen ausschließen.

Links zum Thema:
PHP Handbuch – Error Handling and Logging Functions

(Gast | 15.06.03)

Diskussion zum Thema:

7 Kommentare zu “Fehler in PHP abfangen und per Email weiterleiten”
  • raiha 16.06.03, 02:16

    Gute Möglichkeit, ;-)

    denn als Entwickler kann man sich gar nicht alle Fehler ausdenken (& durchspielen & beseitigen), die der nächste DAU dann macht ;D

  • semo 17.06.03, 09:08

    Nachteil dieser Methode, tritt wirklich mal ein Fehler auf, bekommt man bei 1000 Besucher auch 1000 Emails. Und das verbraucht natürlich zusätzlich Ressourcen, und man hat einen vollen Emailkasten (Ok, bei den meisten wird es wohl gefiltert, wenn 1000 Emails von dem gleichen Absender kommen).

  • stalkerx 20.06.03, 12:58

    Ist besser als gar keine ;)

    Im ernst: Man kann die Funktion auch erweitern, in dem man einem Fehler eine Nummer vergibt und diese dann in die Datenbank mit einem Flag abspeichert. Vor dem Versenden der E-Mail wird geprüft, ob ein Fehler mit gleichen Parametern schon gemeldet wurde oder nicht…

    Es ist nur eine der vielen Möglichkeiten (L)

  • cbs 20.06.03, 13:01

    Ich denke der Artikel gibt einen guten Einblick in die Möglichkeiten. Weitere Variationen liegen ganz in der Hand des jenigen, der diese Anregungen umsetzt. ;-)

  • semo 28.06.03, 15:40

    Ja, in der Tat gibt es viele Möglichkeiten. Ich nutze selbst teilweise die Flag – Variante. Eine geeignete Fehlerkontrolle sollte man auf jeden Fall einbauen, egal welche spezielle Methode man nutzt.

    Wer glaubt, die User benachrichtigen einen, wenn was nicht funktioniert, ist wohl sehr naiv ;)

  • stalkerx 28.06.03, 19:56

    >> Wer glaubt, die User benachrichtigen einen, wenn was nicht funktioniert, ist wohl sehr naiv

    Deine Meinung teile ich auch, Michael – genau aus diesem Grund setze ich ErrorHandling in all meinen Projekten ein, auch “geschäftlich”…

  • hpfans 02.07.03, 18:58

    Zunächst einmal Glückwunsch zu diesem sehr ausführlichen und gelungenem Artikel. Planst du eine Forsetzung? Wäre schon, dann könntest du nämlich auch auf das Errorhandlung bei MySQL-Aktionen eingehen, das habe ich mir neulich erklären lassen und es wäre super, wenn ich das irgendwann auch mal schwarz auf weiß hätte :-)

    Jonas


 
 
Shopping
Preisvergleich!
Vergleichen Sie jetzt die Preise vieler Produkte und sparen Sie durch den Einkauf im Preisvergleich bei namhaften Händlern. Mehr
       
 
Geschichte
Launch 1998
Christian Boris Schmidt startet als damals 16-Jähriger eine Website bei Geocities mit 5 MB Webspace, um Andere bei der Gestaltung eigener Websites zu unterstützen. Mit Hilfe des Weiterleitungsdienst home.pages.de wird die Seite auch erreichbar unter all.4.home.pages.de.

Eigene Domain 2000
Die Website ist erstmals unter all4homepages.de beim Webhoster Puretec (heute 1&1) erreichbar. Zuvor war die Reservierung einer eigenen Domain für den Schüler kaum bezahlbar.

Relaunch 2001
all4homepages.de bekommt nach mehreren Relaunchs das heutige Gesicht als Magazin. Blau wird zur Hausfarbe. Es folgen regelmäßige Newsberichte.

Homepage-Tools 2002
Andreas Mauf unterstützt ab sofort den Technik-Bereich. Nach einem Hosterwechsel werden für Mitglieder die ersten Homepage-Tools angeboten. Diese sind besonders beliebt, weil sie kostenlos und werbefrei sind. Es folgen die wöchentliche Kolumne und Gewinnaktionen für Mitglieder in Kooperation u.a. mit Canon und diversen Webhostern. Ende 2002 wird der erste, eigene Webserver in Betrieb genommen.

Neuer Name 2003
Zum 5. Geburtstag wurde MeinWebworker als neuer Name bekannt gegeben. Zu diesem Zeitpunkt nutzen mehr als 4.000 Mitglieder aktiv unsere Dienste. Nach dem erfolgreichen Abschluss einer IT-Ausbildung Mitte 2003 kann das Team die Arbeit am Projekt aus finanziellen Gründen nur noch teilweise fortgesetzen.

Übergangsphase 2004
Christian arbeitete seit dem Abschluss zunächst bei Zanox und Andreas machte sich mit der Idee zu Ecato als Einzelunternehmer selbstständig.

Ecato-Gründung 2005
Im Mai gründen Andreas und Christian mit Investoren Ecato, um Websitebetreiber beim Geld verdienen zu unterstützen. Kurz später müssen die Homepage-Tools von MeinWebworker leider aus organisatorischen Gründen eingestellt werden. Seit Ende 2005 können Websitebetreiber bei Ecato kostenlos in wenigen Schritten einen eigenen Marktplatz mit Preisvergleich einrichten und damit verdienen.

Hier geht es weiter

   
Anzeige
Shopping



 
     

Ecato
Das Marktplatz-Netzwerk

© 1998-2014 MeinWebworker. Alle Rechte vorbehalten.
Ein Projekt von Christian Boris Schmidt und Andreas Mauf.
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung des Autors nicht gestattet. Impressum


againstchildporn.org - Zusammen gegen Kinderpornographie und Kindermissbrauch im Internet und weltweit!
Kinder sind die Zukunft!