Fehlerbehebung bei einem PHP-Skript

Sie können nicht nur Skripte schreiben, ohne bestimmte Fehler zu machen. Der Trick ist, sich selbst zu trainieren, sie zu erkennen, rollen Sie die Augen, sagen: "Nicht schon wieder", und befestigen Sie sie einfach. Eine Fehlermeldung, die Sie oft sehen werden ist

Parse error: parse error in c: test.php on line 7

Das ist der PHP-Art zu sagen: "Hä?" Es bedeutet, dass es etwas nicht verstehen. Diese Meldung weist helfend in die Datei und die Zeilennummer, wo PHP verwechselt wurde. Manchmal ist es direkt an den Fehler zeigt, aber manchmal PHP Verwirrung ergibt sich aus einem Fehler früher im Skript.

Im Folgenden sind einige der häufigsten Fehler und wie man sie vermeidet.

Fehlende Semikolons

Jede PHP Anweisung endet mit einem Semikolon (-). PHP ist noch keine Aussage zu lesen, bis es ein Semikolon erreicht. Wenn Sie das Semikolon am Ende einer Zeile auslassen, liest weiter PHP die Anweisung in der nächsten Zeile. Betrachten wir zum Beispiel die folgende Anweisung:

$ Test = 1
echo $ test;

Diese Aussagen machen keinen Sinn für PHP- es die beiden Zeilen als eine Anweisung liest, so ist es beschwert sich mit einer Fehlermeldung, wie die folgenden:

Parse error: parse error in c: test.php on line 2

Dies ist ein sehr häufiger Fehler. Bevor Sie es kennen, werden Sie Ihre Heimatadresse mit Semikolons am Ende jeder Zeile zu schreiben.

Nicht genug Gleichheitszeichen

In einem Vergleichsrechnung, in denen Sie fragen, ob zwei Werte gleich sind, können Sie zwei gleiche Zeichen in einer Reihe benötigen. ein Gleichheitszeichen ist ein häufiger Fehler. Es ist eine durchaus vernünftige Fehler, weil Sie ein Gleichheitszeichen verwendet haben verstanden gleich seit der ersten Klasse, wenn man gelernt, dass 2 + 2 = 4 ist dies eine schwierige Fehler ist, zu erkennen, weil es keine Fehlermeldung verursacht. Es macht einfach Ihr Skript seltsame Dinge tun, wie Endlosschleifen oder ob Blöcke, die nie ausgeführt. Sie können sich, wie lange staunen Sie so etwas wie den folgenden Code starren können

$ Test = 0-
while ($ test = 0)
{
$ Test ++ -
}

und nicht sehen, warum es endlos Schleife.

Fehlende Dollar-Zeichen

Ein fehlender Dollar-Zeichen in einem Variablennamen ist wirklich schwer zu sehen, aber zumindest ist es führt in der Regel zu einer Fehlermeldung, so dass Sie wissen, wo das Problem zu suchen. Es führt in der Regel in der altbekannten Parse-Fehler:

Parse error: parse error in test.php on line 7

Troubling Zitate

Sie können zu viele, zu wenige oder die falsche Art von Anführungszeichen. Sie haben zu viele, wenn Sie Anführungszeichen innerhalb von Anführungszeichen, wie dieses Beispiel setzen:

$ Test = "

"-

PHP sieht das zweite doppelte Anführungszeichen (") - Vor 100 - wie die Endung doppelte Anführungszeichen (") Und liest die 1 als eine Anweisung, die keinen Sinn macht. Voila! Ein weiterer Parse-Fehler. Die Leitung muss entweder

$ Test = "

"-

oder

$ Test = "

"-

Sie haben zu wenige Zitate, wenn Sie vergessen haben, eine Zeichenfolge in Anführungszeichen zu beenden, wie

$ Test = "

-

PHP liest weiter die Zeilen als Teil der Zeichenfolge zitiert, bis er ein weiteres doppeltes Anführungszeichen stößt ("), Die nicht für mehrere Zeilen auftreten kann. Dies ist eine Gelegenheit, wenn der Parse-Fehler, der zu den Punkten, wo PHP verwirrt wurde nicht auf den tatsächlichen Fehler zeigt. Der tatsächliche Fehler aufgetreten ein paar Zeilen vorher, wenn Sie die Zeichenfolge am Ende vergessen zu.

Sie haben die falsche Art von Anführungszeichen, wenn Sie ein einfaches Anführungszeichen verwenden ('), Wenn Sie bedeutete eine doppelte Anführungszeichen (") oder umgekehrt.

Nummerierte Arrays

PHP glaubt, dass der erste Wert in einem Array nummerierte Null (0). Natürlich sind in der Regel Menschen glauben, dass die Listen mit der Nummer eins beginnen (1). Diese grundlegend andere Art der zeigt die Ergebnisse in uns sehen Menschen glauben, ein Array nicht richtig funktioniert, wenn es in der Tat funktioniert gut. Betrachten wir zum Beispiel die folgenden Aussagen:

$ Test = 1-
while ($ test lt; = 3)
{
$ Array [] = $ Test-
$ Test ++ -
}
echo $ array [3];

Keine Ausgabe (oder eine Fehlermeldung) zur Folge hat. Man könnte zu dem Schluss, springen, dass es etwas falsch mit der Schleife ist. Eigentlich ist es in Ordnung. Es ergibt sich nur in der folgenden Array

$ Array [0] = 1
$ Array [1] = 2
$ Array [2] = 3

und stellt nicht alles in $ Array [3].

Einschließlich PHP-Anweisungen

Wenn eine Datei eingelesen, indem ein mit einschließen Anweisung in einem PHP-Abschnitt, scheint es sinnvoll, dass die Aussagen in der Datei wird als PHP-Anweisungen behandelt werden. Immerhin fügt PHP die Anweisungen, um das Skript zu dem Punkt, wo Sie sie umfassen. Allerdings ist PHP sehen es nicht so. Wenn eine Datei mit dem Namen file1.inc enthält die folgenden Aussagen

if ($ Test == 1)
echo "Hallo";

und lesen Sie es mit den folgenden Aussagen in Ihrem Haupt-Skript in:

lt;? php
$ Test = 1-
include ( "file1.inc") -
?>

Sie erwarten, dass das Wort Hallo auf der Webseite angezeigt werden soll. Doch eigentlich die Web-Seite zeigt dies:

if ($ Test == 1) echo "Hallo";

Offensichtlich ist die Datei, die enthalten ist, wird als HTML gesehen. Senden Hallo auf der Webseite, file1.inc muss die PHP-Tags enthalten.

lt;? php
if ($ Test == 1)
"Hallo" echo -
?>

Fehlende Kollegen

Klammern und geschweifte Klammern müssen paarweise kommen. Eröffnung mit einem ( das hat keine Schließung ) oder ein { ohne ein } führt zu einer Fehlermeldung. Ein Beispiel hierfür ist, wenn man schließenden Klammer angezeigt, in dem zwei benötigt werden, wie in der folgenden Aussage:

if (isset ($ test)

Diese Aussage muss eine schließende Klammer am Ende. Es ist viel schwieriger zu erkennen, dass eine Ihrer Blöcke nicht geschlossen werden, wenn Sie Blöcke innerhalb der Blöcke innerhalb der Blöcke. Betrachten wir zum Beispiel die folgenden:

while ($ test lt; 3 )
{
if ($ test2! = "yes")
{
if ($ test3> 4)
{
echo "go" -
}
}

Sie können drei sind Öffnung geschweiften Klammern sehen, aber nur zwei Abschlubkonzert. Stellen Sie sich vor, dass 100 Zeilen Code innerhalb dieser Blöcke sind. Es kann schwierig sein, das Problem zu erkennen - vor allem, wenn Sie die letzten schließenden Klammer denken schließt die während Schleife, aber PHP sieht es als Schließen der ob Schleife für $ test2. Irgendwo später in Ihrem Skript, kann PHP sein, einen Schließbügel mit der zum Schließen während Schleife, die Sie nicht einmal betrachten. Es kann schwierig sein, das Problem in einer großen Skript zu verfolgen.

Einrücken Blöcke macht es leichter zu sehen, wo schließenden Klammern gehören. Sie können auch Kommentare zu behalten, verwenden Spur, wo Sie sind, wie zum Beispiel

while ($ test lt; 3 )
{
if ($ test2! = "yes")
{
if ($ test3> 4)
{
echo "go" -
} # Schließung, wenn Block für $ test3
} # Schließung, wenn Block für $ test2
} # Schließung während der Block

Verwirrende Klammern und Klammern

Obwohl PHP keine Mühe zu unterscheiden zwischen den Klammern und geschweifte Klammern hat, die Augen nicht immer so zuverlässig sein - vor allem, wenn Sie für eine 10-Stunden-Programm Marathon auf einem Computer-Bildschirm starrt habe. Sie können leicht verwirren ( und {. Bei Verwendung des falschen bekommt man eine Parse-Fehlermeldung.

Menü