Ich habe eine Fehlermeldung erhalten:
Parse error: syntax error, unexpected end of file in the line
Mit diesem Code:
<html>
<?php
function login()
{
// Login function code
}
if (login())
{?>
<h2>Welcome Administrator</h2>
<a href=\"upload.php\">Upload Files</a>
<br />
<a href=\"points.php\">Edit Points Tally</a>
<?php}
else
{
echo "Incorrect login details. Please login";
}
?>
Some more HTML code
</html>
Was ist das Problem?
php
html
parse-error
Pratnala
quelle
quelle
short_tags
in Ihrer php.ini unter BEIDEapache
undcli
KonfigurationenAntworten:
Sie sollten dies vermeiden (am Ende Ihres Codes):
und das:
Sie sollten Klammern nicht direkt in die Nähe des Open / Close-
php
Tags setzen, sondern durch ein Leerzeichen trennen:auch vermeiden
<?
und verwenden<?php
quelle
<? } ?>
statt<?php } ?>
.Ich hatte den gleichen Fehler, aber ich hatte ihn durch Ändern der
php.ini
Datei behoben .Finde deine php.ini Datei siehe Dude, wo ist meine php.ini?
Öffnen Sie es dann mit Ihrem Lieblingseditor.
Suchen Sie nach einer
short_open_tag
Eigenschaft und übernehmen Sie die folgende Änderung:quelle
<? ?>
(beachten Sie, der fehlendephp
). Ich habe die Aufgabe, Funktionen hinzuzufügen oder zu ändern, und es ist normalerweise keine gute Idee, alles nur für ein oder zwei Funktionen zu ändern . Ihre Antwort hat wirklich geholfen.Es gibt zwei verschiedene Methoden, um die Analysefehlersyntax zu umgehen.
Methode 1 (Ihre PHP-Datei)
Vermeiden Sie in Ihrer PHP-Datei Folgendes:
Stellen Sie sicher, dass Sie es so ausdrücken
Methode 2 (php.ini-Datei)
Es gibt auch eine einfache Möglichkeit, Ihr Problem zu lösen. Suchen Sie nach dem
short_open_tag
Eigenschaftswert (Verwenden Sie ihn in Ihrem Texteditor mitCtrl + F
!) Und übernehmen Sie die folgende Änderung:zu
Gemäß der Beschreibung der core php.ini Einstellungen ,
short_open_tag
können Ihnen den kurzen offenen Tag (verwenden<?
) , obwohl dies könnte Probleme verursachen , wenn sie mit xml (verwendet<?xml
wird nicht funktionieren , wenn dieser aktiviert ist)!quelle
Gehen Sie einfach zu php.ini und finden Sie
short_open_tag= Off
set toshort_open_tag= On
quelle
Suchen Sie nach Schleifen oder Anweisungen, die nicht geschlossen sind.
Ich war auf dieses Problem gestoßen, als ich ein PHP foreach: tag nicht geschlossen hatte.
Durch Schließen mit den folgenden Methoden wurde der Syntaxfehler behoben:
unexpected end of file
Hoffe es hilft jemandem
quelle
Überprüfen Sie, ob Sie Ihre Klasse geschlossen haben.
Wenn Sie beispielsweise eine Controller-Klasse mit Methoden haben und versehentlich die letzte Klammer löschen, die die gesamte Klasse schließt, wird dieser Fehler angezeigt.
quelle
Suchen Sie auch nach einem Kommentar //, der die schließende geschweifte Klammer bricht
if (1==1) { //echo "it is true"; }
Die schließende geschweifte Klammer schließt den bedingten Abschnitt nicht richtig und PHP verarbeitet den Rest des Codes nicht richtig.
quelle
Vermeiden Sie dies auch
<? } ?>
stellen Sie sicher, dass Sie setzen<?php } ?>
quelle
Ich habe einige Fehler gesehen, die ich unten behoben habe.
Das habe ich als falsch empfunden:
So hätte ich es gemacht:
quelle
In meinem Fall war der Schuldige das einzige öffnende
<?php
Tag in der letzten Zeile der Datei. Anscheinend funktioniert es bei einigen Konfigurationen ohne Probleme, verursacht aber bei anderen Probleme.quelle
Achten Sie auch auf Heredoc-Abschlusskennungen.
Ungültiges Beispiel:
Dies löst eine Ausnahme aus, die der folgenden ähnelt:
Dabei ist Nummer 5 möglicherweise die letzte Zeilennummer Ihrer Datei.
Laut PHP-Handbuch :
TLDR : Schließende Bezeichner sollten NICHT eingerückt werden.
Gültiges Beispiel:
quelle
Ein weiterer Fall, in dem es schwer zu erkennen ist, ist, wenn Sie eine Datei mit nur einer Funktion haben. Ich weiß, dass dies kein häufiger Anwendungsfall ist, aber es ist ärgerlich und musste den Fehler erkennen.
Die obige Datei gibt den Fehler zurück, die folgende
Parse error: syntax error, unexpected end of file in
nicht.quelle
Für mich ist die häufigste Ursache ein weggelassenes} Zeichen, so dass eine Funktion oder ein if-Anweisungsblock nicht beendet wird. Ich behebe dies, indem ich nach meinen letzten Änderungen ein} -Zeichen einfüge und es von dort aus verschiebe. Ich verwende einen Editor, der öffnende Klammern finden kann, die einer schließenden Klammer entsprechen, sodass diese Funktion ebenfalls hilfreich ist (er findet die Funktion, die nicht korrekt beendet wurde).
Wir können hoffen, dass eines Tages Sprachinterpreten und Compiler einige Arbeit leisten werden, um bessere Fehlermeldungen zu generieren, da es so einfach ist, eine schließende Klammer wegzulassen.
Wenn dies jemandem hilft, stimmen Sie bitte die Antwort ab.
quelle
Sie können IF / ELSE-Anweisungen nicht in zwei separate Blöcke unterteilen. Wenn Sie HTML-Code zum Drucken benötigen, verwenden Sie echo .
quelle
Als Ergänzung zu anderen Antworten kann es auch an der automatischen Minimierung Ihres PHP-Skripts liegen, wenn Sie einen FTP-Client wie FileZilla verwenden. Stellen Sie sicher, dass der Übertragungstyp auf Binär und nicht auf ASCII oder Auto eingestellt ist. Der ASCII- oder Auto-Transfer-Typ kann Ihren PHP-Code minimieren, was zu diesem Fehler führt.
quelle
Wenn Sie mit parse_ini_file ($ file) oder einer Routine eine INI-Datei ausstrahlen, überprüfen Sie, ob Ihre Daten in der INI-Datei angegeben sind. Nicht zitierte Daten verursachen diesen Fehler. Ex; data1 = test verursacht den Fehler, data1 = "test" nicht.
quelle
In meinem Fall habe ich den Inhalt in eine andere Datei kopiert und dann die PHP-Datei gelöscht und eine neue erstellt, den Inhalt erneut in dieselbe Datei kopiert und es hat funktioniert.
quelle