Vermeidung von PHP-Fehlermeldungen
Ein PHP-Programm kann längst nicht alles bewerkstelligen. Werden vom Benutzer Bearbeitungsschritte ausgeführt, die das Programm nicht versteht,
wird im Regelfall eine Fehlermeldung ausgegeben. Diese ist dazu da, den Anwender darauf hinzuweisen, dass sein Vorhaben nicht möglich ist.
Durch die Ausgabe der Fehlermeldung wird auch der Fehler (der falsche Bearbeitungsschritt) abgefangen.
Jeder der schon einmal mit PHP zu tun hatte kennt diese Fehlermeldungen vom PHP-
Interpreter.
Diese Fehlermeldungen haben den Vorteil dass sich der Programmierer genauer mit dem PHP-Code auseinander setzen muß und dabei die Programmiersprache erlernt

Die Fehlermeldung zeigt die Zeile an wo der Fehler auftrat, nicht unbedingt in welcher Zeile dieser gemacht wurde!
Sowie den Namen der Datei die den Fehler produziert hat und einen Hinweis zur möglichen Ursache.
Einfache Kenntnisse in der englischen Sprache reichen zumeist aus um die Fehlermeldungen zu verstehen (ein Wörterbuch hilft!). Sie können aber auch nach
der Fehlermeldung "googeln", in zahlreichen Foren haben andere ähnliche
Probleme und vielleicht auch Lösungsvorschläge.
Bevor Sie jedoch jemanden aus einem Forum mit Ihrem Problem belästigen, suchen Sie selbst nach dem Fehler.
- Auf dieser Seiten finden Sie:
- • Gründe für das entstehen von Fehlermeldungen
- • Fehlervermeidung
- • Fehlermeldungen ausschalten oder unterdrücken
- • Fehlermeldungen anzeigen und analysieren
- • PHP-Fehlermeldungen und Warnungen
- • Weitere Fehlerquellen
- • Fazit
• Gründe für das entstehen von Fehlermeldungen
- Fehlerhafte PHP-Syntax.
- Falscher Programmablauf (Logik-Fehler).
- Schreibfehler bei Variablennamen.
- Falsche Variablen-Werte eingetragen.
- Semikolon (Strichpunkt) ; am Zeilenende vergessen.
- Vergessen eines Punktes . beim verbinden von Zeichenketten.
- Geschweifte Klammer { } vergessen oder zu häufig gesetzt.
- Runde Klammer ( ) vergessen oder zu häufig gesetzt.
- Anführungszeichen " vergessen oder an falscher Stelle.
- Einfaches Anführungszeichen ' vergessen oder an falscher Stelle.
- Codesequenzen nach dem "Kopieren und Einfügen" nicht angepasst.
- Falsche Groß.- und Kleinschreibung.
- Gleiche Variablennamen sind mehrmals vergeben.
- Falsche Anwendung einer PHP-Funktion.
• Fehlervermeidung
Ich empfehle jeden Webmaster die Verwendung eines Programmeditors,
der über eine
Texthervorhebung für HTML, CSS, PHP und JavaScript verfügt.
Gute Editoren zeigen alle PHP-nativen* Funktionen in einer anderen Farbe an.
Durch die Farbhervorhebung findet man auf diese Art sehr einfach vergessene Abschluss-
Tags, ausgeklammerten Code und auch über die Anzeige von Zeilennummern die Position,
an der ein Fehler aufgetreten ist.
*
Beispiel: Notepad++ (Bildschirmfoto) -
notepad-plus.sourceforge.net
Durch farbiges Anzeigen der Sprachelemente vereinfacht
Notepad++ das Schreiben von Programmen.
Tipp
Nützliche und kostenlose Editoren für Webmaster - Hier finden Sie die besten Editoren mit einer kurzen Beschreibung dazu.
• Ein gutes PHP-Script verwendet sehr individuelle Variable-Namen, am besten mit einem festen Vorzeichen. Nur so kann erreicht werden, dass sich
verschiedene Scripte nicht ins Gehege kommen.
• Verwenden Sie keine Abkürzungen bei Variablen, die niemand kennt, Variablen dürfen Sie auch nicht durchnummerieren
("$var1", "$var2", etc.) Auf keinen Fall Abkürzungen verwenden, die zweideutig sein können.
• Beim Programmieren ist das Prüfen das
A und O. Sie müssen stets prüfen, ob das was
Sie gedacht haben auch
tatsächlich ausgeführt wurde. Und zwar nicht nur indem Sie die Seite anschauen
sondern vor allem auch mit Kontrollausgaben die Ergebnisse der einzelnen Teilschritte.
Hilfreich ist es meist, sich Variablen und Ergebnisse von Ausdrücken anzeigen zu lassen, zum Beispiel mit
echo oder
mit
print_r() /
var_dump(), und mit den erwarteten Werten zu vergleichen.
Manchmal findet sich ein Hinweis auf einen Fehler im
Quelltext der
ausgegebenen HTML-Seite. Es kann auch sein, das durch fehlerhafte HTML-Tags, PHP/MySQL-Fehlermeldungen nur dort (im Quelltext) sichtbar sind.
• Fehlermeldungen ausschalten oder unterdrücken
Fehlermeldungen ausschalten:
<?php
error_reporting(0);
?>
Fehlermeldungen unterdrücken:
<?php
echo @$variable;
?>
Das
@-Zeichen (Fehler-Kontroll-Operator) dient zur Fehler-Unterdrückung.
Zum Beispiel wenn eine Variable nicht deklariert wurde.
Auch wenn dadurch der Fehler nicht mehr angezeigt wird tritt der Fehler weiterhin auf. Falls weitere Probleme in diesem
Ausdruck auftreten sollten werden diese auch unterdrückt. So kann es zu schwerwiegenden Problemen kommen, ohne dass
man einen Hinweis bekommt, wo diese liegen.
Man sollte immer erst eine PHP-Alternative suchen bevor man das
@-Zeichen
verwendet, dieses Zeichen gilt allgemein als schlechter Programmierstil.
Grundsätzlich ist hierzu folgendes zu empfehlen:
Online sollten Warnungen nicht ausgegeben werden, da es die Besucher eher verwirrt, als dass es hilfreich wäre.

Angreifer gewinnen durch diese Fehlermeldungen hilfreiche Tipps!
Mehr dazu unter
PHP mit Sicherheit
Offline (auf dem lokalen Webserver) und zum testen sollten die Warnungen allerdings auf jeden Fall angezeigt werden, weil oft nur so Fehler entdeckt werden,
die von PHP nicht ausgebügelt werden können und somit unbemerkt zu Fehlfunktionen führen.
Das folgende PHP-Schnipsel zeigt Fehlermeldungen nur bei "
localhost" an:
<?php
error_reporting($_SERVER["SERVER_NAME"] == "localhost" ? E_ALL : 0);
?>
• Fehlermeldungen anzeigen und analysieren
Um den erstellten PHP-Code zu verbessern lassen Sie alle Fehlermeldungen anzeigen.
<?php
error_reporting(E_ALL);
ini_set( 'display_errors', 'On' ); // Optional
?>
es werden Fehlermeldungen vom Typ: E_ERROR, E_WARNING, E_PARSE und E_NOTICE angezeigt.
Fehlermeldungen analysieren:
// Array anzeigen
print_r($array);
var_dump($array);
// Gesendete POST-Variablen anzeigen
print_r($_POST);
// Gesendete GET-Variablen anzeigen
print_r($_GET);
// Eingebundene Dateien eines PHP-Scriptes anzeigen
$IncludeDateien = get_included_files();
print_r($IncludeDateien);
// Geladene Erweiterungen anzeigen
$GeladeneErweiterungen = get_loaded_extensions();
print_r($GeladeneErweiterungen);
Fehlermeldungen bei MySQL anzeigen:
// SQL-Befehl immer in eine Variable schreiben
$sql = "SELECT * FROM2 `linkliste`";
// SQL-Befehl ausführen und etwaigen Fehler anzeigen
$datensatz = mysql_query($sql) or die(mysql_error() . $sql);
// Oder:
if (mysql_query($sql)) {
echo "OK";
}
else {
echo "Fehler: " . mysql_error() . $sql;
}
Dieses PHP-Programm erzeugt etwa folgende Fehlermeldung (auf englisch):
"You have an error in your SQL syntax. Check the manual that corresponds
to your MySQL server
version for the right syntax to use near 'FROM2 `linkliste`' at line 1"
Danach wird der SQL-Befehl ausgegeben:
SELECT * FROM2 `linkliste`
Ein langer PHP oder SQL-Befehl sollte in mehrere Zeilen aufgeteilt werden, erstens macht es den Befehl übersichtlicher und zweitens
wird bei einer Fehlermeldung die betreffende Zeile mit ausgegeben.
$sql = "SELECT
`vorname`,
`name`,
`strasse`,
`hausnummer`,
`plz`,
`ort`,
`vorwahl`,
`telefon`
FROM
`kunden`
WHERE
`ort` = 'Berlin'
ORDER BY
`name`
LIMIT
0,20";
Wichtig ist, sich einen sauberen Stil im Schreiben von PHP/MySQL anzugewöhnen. Dann schleichen sich weniger Fehler ein und gemachte Fehler findet man schneller.