Die Fehlersuche allgemein
Startseite > Allgemein > Die Fehlersuche allgemein
Hier haben wir einige Informationen für das programmieren und der gleichzeitigen Ausgabe von auftretenen Fehlermeldungen in PHP.
Als erstes müsst Ihr dafür sorgen das php euch die Fehler anzeigt.
Entweder in eurer Testumgebung die php.ini anpassen:
error_reporting = E_ALL
und
output_buffering = 0 (ist bei Providern meist schon auf 0 gestellt)
Die php.ini Datei speichern und php neustarten.
Oder Ihr fügt in den Scripten folgendes oben ein:
error_reporting(E_ALL);
Damit werden alle Warnungen und Fehler ausgegeben.
Nun solltet Ihr noch eure Scripte prüfen, ob vor irgendwelchen Funktion ein
@ (AT) steht, dieses müsste dann noch entfernt werden, da das @ dazu benutzt
wird Fehlermeldungen zu unterdrücken.
Beispiel:
Code:
Die Fehlersuche
Die Meldung:
Parse error: parse error, unexpected '}' in E:\php-fehler\test_code.php on line 12
Die Meldung sagt:
- was falsch ist, -> Syntax Fehler
- in welcher Datei der Fehler aufgetreten ist, -> test_code.php
- wo sich die Datei im System befindet, -> Ordner "php-fehler"
(wichtig wenn Dateien includet werden)
- und in welcher Zeile php den Fehler bemerkt hat, -> Zeile 12
Der Code:
Code:
Wenn man jetzt den Code analysiert wird man feststellen das in Zeile 12 nur eine schliessene geschweifte Klammer steht.
Der Fehler selbst liegt damit irgendwo oberhalb der Zeile 12, in diesem Fall in der Zeile 7, dort fehlt die öffene geschweifte Klammer.
PHP hat es nicht in Zeile 7 gemerkt da die Konstrukte if elseif und else auch ohne geschweifte Klammern funktionieren. Wie in anderen Programmiersprachen auch.
Zum Thema geschweifte Klammern sollte noch erwähnt werden, wenn folgende Fehlermeldung auftritt:
Parse error: parse error, unexpected $end in E:\test_code.php on line 13
Dann fehlt meist eine schliessende geschweifte Klammer, die Zeilenangabe hilft dabei leider nicht, da es sich meist um das Ende des PHP-Bereichs handelt.
Entweder in eurer Testumgebung die php.ini anpassen:
error_reporting = E_ALL
und
output_buffering = 0 (ist bei Providern meist schon auf 0 gestellt)
Die php.ini Datei speichern und php neustarten.
Oder Ihr fügt in den Scripten folgendes oben ein:
error_reporting(E_ALL);
Damit werden alle Warnungen und Fehler ausgegeben.
Nun solltet Ihr noch eure Scripte prüfen, ob vor irgendwelchen Funktion ein
@ (AT) steht, dieses müsste dann noch entfernt werden, da das @ dazu benutzt
wird Fehlermeldungen zu unterdrücken.
Beispiel:
Code:
- $handle = @fopen ("c:\data\info.txt", "r");
- //Durch das @ soll die Fehlermeldung unterdrückt werden
- //Was bei der Fehlersuche nicht gerade von Vorteil ist.
Die Fehlersuche
Die Meldung:
Parse error: parse error, unexpected '}' in E:\php-fehler\test_code.php on line 12
Die Meldung sagt:
- was falsch ist, -> Syntax Fehler
- in welcher Datei der Fehler aufgetreten ist, -> test_code.php
- wo sich die Datei im System befindet, -> Ordner "php-fehler"
(wichtig wenn Dateien includet werden)
- und in welcher Zeile php den Fehler bemerkt hat, -> Zeile 12
Der Code:
Code:
- <?php
- if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
- ?>
- <h3>strstr muss true zurückgegeben haben</h3>
- <center><b>Sie benutzen Internet Explorer</b></center>
- <?php
- } else
- ?>
- <h3>strstr muss false zurückgegeben haben</h3>
- <center><b>Sie benutzen nicht Internet Explorer</b></center>
- <?php
- }
- ?>
Wenn man jetzt den Code analysiert wird man feststellen das in Zeile 12 nur eine schliessene geschweifte Klammer steht.
Der Fehler selbst liegt damit irgendwo oberhalb der Zeile 12, in diesem Fall in der Zeile 7, dort fehlt die öffene geschweifte Klammer.
PHP hat es nicht in Zeile 7 gemerkt da die Konstrukte if elseif und else auch ohne geschweifte Klammern funktionieren. Wie in anderen Programmiersprachen auch.
Zum Thema geschweifte Klammern sollte noch erwähnt werden, wenn folgende Fehlermeldung auftritt:
Parse error: parse error, unexpected $end in E:\test_code.php on line 13
Dann fehlt meist eine schliessende geschweifte Klammer, die Zeilenangabe hilft dabei leider nicht, da es sich meist um das Ende des PHP-Bereichs handelt.
Kommentar schreiben
andere Themen:
24.02.2005
Fehlersuche Werte23.02.2005 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL
22.02.2005 Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or
21.02.2005 Warning: Division by zero
Zurück

Kommentare