0251 / 590 837 15
info@a-coding-project.de

Wie man PHP Fehlerursachen aufspürt

Ich bekomme mehrmals täglich Anfragen von Leuten, die meine (PHP-)Tutorials gemacht haben und nicht weiterkommen. Hier hängt meistens damit zusammen, dass Schritte übersprungen werden, oder das Tutorial nicht auf dem neusten Stand ist und somit die falsche API bedient wird.

Bei einigen Anfragen denke ich mir nur: Da hätte derjenige auch ganz leicht selbst drauf kommen können. Aus diesem Grund möchte ich in diesem Thema ein paar Grundlagen erklären, wie man mit einfachen Mitteln PHP-Fehler aufspürt – Das Beheben selbst ist meist relativ einfach.

PHP-Fehlernachrichten

In den meisten Fällen wird einfach eine Fehlermeldung von PHP ausgegeben. Diese fängt dann meistens mit „Fatal Error“ oder auch „Warning“ an und geben bereits die Datei und betroffene Zeile mit an. Hier sollte man im Quellcode einfach an der Stelle nachsehen. Der Grund muss nicht genau an der Stelle auftreten, schau dir einfach auch den Quellcode ein paar Zeilen drüber an. Hier könnte vielleicht ein Semikolon o.Ä. fehlen.

Errorlogs

Ein Blick in die Errorlogs sollte so oder so ab und an statt finden. Der Errorlog von Apache befindet sich unter Linux meistens unter /var/log/apache2/error.log. Wenn du keinen eigenen Server hast, kannst du einfach mal die Oberfläche deines Webspace-Anbieters durchsehen. Die meisten bieten eine Möglichkeit an die Logs zu kommen.

Nicht nur der Apache-Log kann von Interesse sein, es lohnt auch ein Blick in dem MySQL-Log.

Debugging

Beim Debugging kann man jede einzelene Befehle nach und nach durchgehen und so den Weg den der PHP-Interpreter geht nachverfolgen. Man kann meistens an jeder stelle Variablen überprüfen und so schnell erkennen, wenn etwas nicht so läuft wie es sollte.

Ein Debugger für PHP ist zum Beispiel in Netbeans integriert.

Variablen und „besondere Wegpunkte“ ausgeben lassen

Diese Methode ist vielleicht etwas Oldschool, aber ich habe damit schon einige meiner Fehler behoben. Bei mir findet sie vor allen Anwendung, wenn ich nirgends eine Fehlermeldung habe und nicht genau weiß, wo es abbricht.

An wichtigen Stellen mache ich dann einfach ein echo oder schreibe in die Log-Datei. Nach der letzten Ausgabe / dem letzten Eintrag muss irgendwo der Fehler sein. Hat man nun zum Beispiel ein fehlerhaftes Update-Statement, so kann man es einfach mit echo ausgeben lassen. Um Objekte zu untersuchen ist die Funktion print_r sehr gut geeignet.

Das hört sich zwar alles selbstverständlich an, doch das ist es nicht. Vor allen PHP-Anfängern geben bereits vor dieser Stelle auf und suchen den Kontakt.

Fazit

Man sollte nicht so schnell aufgeben. Es nervt zwar lange nach einen Fehler zu suchen, doch wenn man es selbst probiert, ist man meistens schneller fertig als wenn man eine Antwort von jemand andren bekommt. Außerdem wird man mit der Zeit routinierter und kann die Fehlerursache dann schneller finden und beheben.

Kommentare

Daniel schrieb am 18.08.2011:

Du sprichst mir aus der Seele. Ein gutes Tool für das Programmieren ist Notepad++. Es zeigt die Zeilennummer gleich an.

Christian schrieb am 18.08.2011:

Ich bin auch gerade dabei, meine PHP Kenntnisse weiter zu entwickeln, um meine Seiten an meine Bedürfnisse anpassen zu können. Das mit den Fehlern ist halt so eine Sache. Meistens passiert es mir, das ich das ";" vergesse und so einen Fehler generiere - ist ja logisch. In vielen Tutorials ist es aber so, das die Codes praktisch zum "Kopieren da sind" und man gerade solche Grundlegenden Sachen - wie eben die Ausgabe eines PHP Fehlers - nicht erklärt bekommt.

Stefan Wienströer schrieb am 18.08.2011:

@Daniel: Zeilennummer anzeigen kann eigentlich fast jedes Programm. Wenn du weitere Funktionen von Notepad++ kennen lernen willst: http://blog.stevieswebsite.de/2010/09/notepad-effektiv-nutzen/