PHP / PHP/MySQL - Fehlermeldungen 1 2

von: Werner Zenk

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

 

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.

 

 Das könnte Sie interessieren:
Mit Metaphone Wörter vergleichen  Beim Senden eines Formulars die gewählte Auswahl in der Auswahlliste beibehalten.  Datum der nächsten sieben Tage ausgeben  Alle Dateien im aktuellen Verzeichnis und den Unterverzeichnissen anzeigen  Copyright-Hinweis immer aktuell  PHP-Einführung  Spam-Schutz mit Captcha  Mit PHP schreiben und lesen (13) - Mit PHP zeichnen - Eine Grafik mit PHP erstellen. Mit den Grafikfunktionen können Sie zur Laufzeit des PHP-Scripts auch Grafiken erzeugen.  Filtern von ganzen Zahlen  PHP-Navigation - Diese PHP-Navigation zeigt die angegebenen Verzeichnisse und Dateien wie in einem Verzeichnisbaum an.  PHP Infos  AJAX-Anleitung (AJAX-Suchfunktion)  Auswahlliste für Tage- und Wochenauswahl - Diese Auswahlliste fügt jeden siebten Tag die Anzahl der Wochen hinzu.  Die aktuelle Jahreszahl in einer Auswahlliste anzeigen  Googlebot-Check  Mit PHP schreiben und lesen (10) - Daten auf mehreren Seiten aufteilen - Seitennavigation mit Zahlen (Blätterfunktion!).  …mehr
© 2000-2012 Homepage-Total.de Kontakt - Impressum - Banner