Hauptmenü

Untermenü

PHP/MySQL - Fehlersuche - Error Reporting

1. Die Abschnitte

2. Grundsätzliches

In PHP hat man doch tatsächlich Einfluss auf Fehlermeldungen! Das heißt aber nicht, dass die eigentlichen Fehler automatisch verschwinden, wenn man an den möglichen Einstellungen herumschraubt. Nein, sie werden nur nicht angezeigt. Das Ganze nennt sich error_reporting und kann auf zweierlei Weise eingestellt werden.

Solltet ihr euren Auftritt bei einem Provider haben, der das Folgende innerhalb des Codes(!) nicht zulässt, dann sucht euch einen neuen.

3. Error-Level

Davon gibt es eigentlich 13. Ich werde der Einfachheit halber aber nur die wichtigen vorstellen.

Nun hat man die Möglichkeit, verschiedene Bedingungen zu definieren, also zum Beispiel E_ALL - E_ERROR oder E_ALL & ~ E_NOTICE. Das heißt soviel wie

Zeige mir alles, was E_ALL auswirft aber nicht die Fatal Errors bzw. alle E_ALL aber keine Notices. [Quelle: euer PHP-Parser]

Eigentlich sind diese Einstellungen mit Zahlencodes verbunden, die man nutzen sollte. Da das aber ziemlich unübersichtlich ist, verzichte ich auf weitere Erläuterungen.

4. Und nun?

Für eine sinnvolle Fehlersuche inklusive einer Anleitung zum sauberen Programmieren sollte man sich auf jeden Fall für E_ALL entscheiden. Alles andere ist ziemlich suboptimal!

Saubere Programmierung?

Ja, ich gestehe! Auch ich produziere von Zeit zu Zeit äußerst schlampigen Code. Das passiert immer dann, wenn es mal wieder gaaaaanz gaaaanz schnell gehen muss. Allerdings bin ich mir darüber im Klaren, was für einen Müll ich da gerade zusammenhaue. Auf Grund langjähriger Erfahrungen weiß ich einfach, dass es funktioniert. Wenn euch also Fehlermeldungen wie zum Beispiel undefined index in ... oder undefined variable in ... nerven, dann könnt ihr die notfalls abklemmen. Dabei handelt es sich um die schon erwähnten "Notices", also nur Hinweise auf schlampigen Code. Dazu benötigt man in seiner Einstellung nur diese Anweisung: E_ALL - E_NOTICE, also alle Fehler zeigen ohne Hinweise. Da gibt es allerdings unterschiedliche Schreibweisen. Laut php.ini sollte man das so notieren: E_ALL & ~ E_NOTICE.

Aber bitte! Wirklich nur im Notfall. Oder wenn man euch fremden und schlampigen Code aufzwingt, und ihr keine Lust habt, die Unsauberkeiten anderer Leute zu beseitigen. Oder wenn euch sauberes Programmieren eh schnurz ist. Oder wenn es euch sowieso nicht juckt, was andere denken. Oder ... to be continued.

5. Und wie...

... bitte binde ich das jetzt ein? Also wenn ihr euer lokales Testsystem konfigurieren wollt, dann sucht in der php.ini nach dem Abschnitt Error handling and logging. Dort sollten folgende Einträge vorhanden sein. Wenn nicht, bitte anpassen oder einfügen. Und nicht vergessen, den Apache noch einmal um den Wigwam zu jagen, vulgo neu starten.

Ansonsten reicht zum Beispiel eine zentrale Konfigurationsdatei mit dem folgenden Eintrag aus.


<?php
  // So
  error_reporting (E_ALL);
  // Oder so
  error_reporting(E_ALL & ~ E_NOTICE);
?>

Diese Datei bindet ihr dann über include oder require in eure PHP-Dateien ein. Und zwar ganz oben! Unter Umständen müsst ihr noch den folgenden Eintrag ergänzen, da sonst keine Fehler angezeigt werden.


ini_set ('display_errors''On');

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt