26.3 Fehlersuche mit PHP
Während des Entwickelns sollte man auch diverse Hilfen zur Fehlersuche parat haben. Besonders wichtig wird dies, wenn Sie eigenen Code schreiben, der nicht in den Serververhalten etc. von Dreamweaver 8 aufgeführt ist.
26.3.1 Fehlermeldungen anzeigen
Die Ausgabe aller PHP-Fehlermeldungen erreichen Sie durch den Befehl error_reporting(E_ALL). Wenn Sie diese Befehlszeile an den Anfang Ihrer Dokumente setzen, werden beim Ausführen des Skripts alle auftretenden Fehlermeldungen und Warnungen ausgegeben. Bei allen Vorteilen, die diese Funktion bei der Entwicklung bietet, kann aber die Fülle der Meldungen die Arbeit auch behindern. Möchten Sie den Befehl weiter ausdefinieren, finden Sie dafür auf der PHP-Website www.php.net eine Funktionsreferenz mit weiteren Parametern.
26.3.2 Externe Variablen anzeigen
Die Anzeige aller Variablen, die von anderen Dokumenten übergeben wurden, also die Arrays GET, POST und SESSION, können Sie einfach mit einer foreach-Schleife ausgeben lassen:
Listing 26.1 Schleife zur Ausgabe des SESSION-Arrays
foreach ($_SESSION as $key =>$value) { echo "Session:"."$key"."-"."$value<br>"; }
Schreiben Sie für jedes der Arrays eine Schleife und erstellen Sie eine include-Datei mit allen Fehler- und Variablenausgaben. Wenn Sie diese in Ihre Website während der Entwicklung oder Fehlersuche einbinden, werden Ihnen so immer alle Fehlermeldungen und übertragenen Variablen angezeigt. Im Anschluss können Sie die Befehlszeilen zum Einbinden dieser Datei einfach auskommentieren.
Eine weitere Möglichkeit besteht darin, die »Fehlersuchdatei« immer einzubinden und im Dokument eine Variable zur Fehlersuche zu setzen. Die dafür einzubindende Datei hat den folgenden Inhalt:
Listing 26.2 Datei zur Fehlersuche
<? if($debug_modus == 1) // Alle Fehlermeldungen und Warnungen einschalten error_reporting(E_ALL) { // SESSION-Array ausgeben foreach ($_SESSION as $key =>$value) { echo "Session:"."$key"."-"."$value<br>"; } // POST-Array ausgeben foreach ($_POST as $key =>$value) { echo "Post:"."$key"."-"."$value<br>"; } // GET-Array ausgeben foreach ($_GET as $key =>$value) { echo "Get:"."$key"."-"."$value<br>"; } } ?>
In den einzelnen Dokumenten setzen Sie als Erstes eine Variable <? $debug_modus = 0 ?> zum Ausschalten oder <? $debug_modus = 1 ?> zum Einschalten der Fehlersuche.
26.3.3 Häufige PHP-Fehlerquellen
Die meisten auftretenden Fehler sind ganz einfacher Art, wobei die häufigsten sich den folgenden drei Gruppen zuordnen lassen:
- Falsche Variablennamen: Achten Sie peinlichst auf Groß- und Kleinschreibung. PHP kennt kein Pardon. A und a sind zwei völlig verschiedene Zeichen.
- Falsche Anführungszeichen: Strings und Zeichenketten gehören in Anführungszeichen, Zahlen nicht. Wenn Sie eine Zahl in Anführungszeichen setzen, um sie auszugeben, wird die Zahl zu einem String und Sie können damit keine eindeutigen Berechnungen mehr durchführen.
- Kommata statt Punkte in Berechnungen: PHP benötigt als Fließkomma einen Punkt. Das Fatale an diesen Fehlern ist, dass man sie häufig erst spät bemerkt, da PHP hemmungslos weiterrechnet, aber alle Nachkommastellen ignoriert.
Zeilennummern einsetzen | Die Fehlermeldungen von PHP geben gute Hinweise auf bestehende Fehler. Dabei werden grundsätzlich die Zeilennummern mit angegeben, um die Fehler schneller finden zu können.
Bei MySQL-Abfragen stimmen diese Zeilennummern oft nicht. Ein Fehler in der Abfrage tritt häufig erst bei der Ausgabe der Daten auf. Überprüfen Sie in diesem Fall die gesamte Abfrage und nicht nur die angegebenen fehlerhaften Zeilen.
Wiederholtes Testen | Achten Sie einfach auf die genaue Schreibweise aller PHP-Elemente und testen Sie nach jedem Befehl die Funktion. Ein DIN A4-seitiges Skript zu schreiben und erst im Anschluss daran zu testen, führt meistens zur Verzweiflung.
Mit Dreamweaver 8 haben Sie hervorragende Möglichkeiten, die Syntax durch die farblichen Hervorhebungen bereits während der Eingabe zu prüfen und fertige, getestete Codefragmente immer wieder zu verwenden. Nutzen Sie diese Möglichkeiten aus, und Sie vermeiden viele Fehler.