PHP/MySQL - Fehlersuche - Fehlertypen
1. Die Abschnitte
- Überblick
- Fehlertypen
- Error Reporting
- MySQL-Fehler
- Syntaxfehler
- Idiotische Fehler
- Testausgaben
- Falsche Fehler
- Fehler unterdrücken
2. Die Unterschiede
In PHP unterscheidet man, einfach ausgedrückt, vier Fehlertypen. Dabei hat die Art einen mehr oder weniger großen Einfluss auf den weiteren Ablauf der Programmierung. Also bitte genau lesen!
3. Fatal Errors
Wenn so etwas passiert, habt ihr ganz großen Mist gebaut. Zum Beispiel eine fehlerhafte Pfadangabe zu einer Datei, die über
require
(nicht include
) eingebunden werden soll. Es kommt aber auch vor, wenn auf dem Server etwas nicht
in Ordnung ist, ein Speicherüberlauf oder Speicherzugriffsfehler. In dem Fall wird euer Script an der Stelle beendet. Und dann ist
Hängen im Schacht
<?php
// Datei bei require(!) nicht vorhanden
require('bla.php');
?>
4. Parse Errors
Dabei handelt es sich um die Verletzung einer Syntax- oder Grammatikregel, die nicht den Vorgaben von PHP entspricht. Sehr beliebt bei Anfängern ist es, zum Beispiel am Ende einer Anweisung das Semikolon zu vergessen.
<?php
// Fehlendes Semikolon am Ende
$bla = 'blubb'
?>
5. Warnings
Hier ist der Code zwar syntaktisch richtig, es gibt aber einen logischen Fehler, bzw. einen Bruch in der Programmierung. Klassische
Beispiele sind "durch Null teilen" oder Array-Funktionen, die auf "Nicht-Arrays" angewendet werden. Auch bei der Einbindung nicht
vorhandener Dateien über include
wird eine Warnung ausgelöst. Im Gegensatz zu den Fatal- und Parse-Errors wird hier
aber die weitere Abarbeitung des Codes nicht abgebrochen!
<?php
$bla = 'laber';
// Array-Funktion bei normaler Variable
foreach ($bla as $blubb)
{
echo $blubb;
}
?>
6. Notices
Hierbei handelt es sich nicht um Fehler im eigentlichen Sinn. Ihr werdet nur darauf hingewiesen, dass ihr schlampig programmiert habt. Besonders beliebt ist der Zugriff auf Variablen, die nicht sauber initialisiert wurden.
<?php
// Notice, wenn $_GET['id'] noch nicht vorhanden
$bla = $_GET['id'];
if ($bla) { ... }
?>
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt