Ich habe einen Fehler 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?
Sie sollten dies vermeiden (am Ende Ihres Codes):
{?>
und das:
<?php}
Sie sollten Klammern nicht direkt in die Nähe des Tags open/close php
setzen.
{ ?>
<?php {
vermeiden Sie auch <?
und verwenden Sie <?php
Ich hatte den gleichen Fehler, der jedoch durch Ändern der php.ini
-Datei behoben wurde.
Finde deine php.ini-Datei unter Dude, wo ist meine php.ini?
dann öffnen Sie es mit Ihrem bevorzugten Editor.
Suchen Sie nach einer short_open_tag
-Eigenschaft und wenden Sie die folgende Änderung an:
; short_open_tag = Off ; previous value
short_open_tag = On ; new value
Ich hatte den gleichen Fehler, aber ich hatte ihn durch Ändern der php.ini und/oder Bearbeiten der Datei PHP behoben!
Es gibt zwei verschiedene Methoden, um die Syntax für die Syntaxanalyse zu umgehen.
Vermeiden Sie Folgendes in Ihrer PHP -Datei:
<? } ?>
Stellen Sie sicher, dass Sie es so setzen
<?php ?>
Ihr Code enthält
<? ?>
HINWEIS:Das fehlende
php
nach<?
!
Es gibt auch eine einfache Möglichkeit, Ihr Problem zu lösen. Suchen Sie nach dem short_open_tag
-Eigenschaftswert (Verwenden Sie in Ihrem Texteditor mit Ctrl + F
!) Und wenden Sie die folgende Änderung an:
; short_open_tag = Off
zu
short_open_tag = On
Entsprechend der Beschreibung der php.ini-Direktive erlaubt short_open_tag
die Verwendung des kurzen offenen Tags (<?
), obwohl dies kann Probleme verursachen, wenn es mit xml verwendet wird (<?xml
funktioniert nicht, wenn dies aktiviert ist)!
HINWEIS:Laden Sie Ihren Server neu (wie zum Beispiel: Apache) und laden Sie Ihre PHP - Webseite in Ihrem Browser.
Gehen Sie einfach zur php.ini und suchen Sie short_open_tag= Off
auf short_open_tag= On
.
Stellen Sie sicher, dass Sie Ihre Klasse geschlossen haben.
Wenn Sie beispielsweise über eine Controller-Klasse mit Methoden verfügen und Sie aus Versehen die letzte Klammer löschen, die die gesamte Klasse schließt, wird dieser Fehler angezeigt.
class someControler{
private $varr;
public $varu;
..
public function method {
..
}
..
}// if you forget to close the controller, you will get the error
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.
Ich war auf dieses Problem gestoßen, als ich ein php foreach: tag nicht geschlossen hatte.
<?php foreach($many as $one): ?>
Beim Schließen mit folgendem wurde der Syntaxfehler behoben: unexpected end of file
<?php endforeach; ?>
Hoffe es hilft jemandem
Vermeiden Sie auch dies <? } ?>
Stellen Sie sicher, dass Sie <?php } ?>
eingeben.
Ich habe einige Fehler gesehen, die ich unten behoben habe.
Das ist, was ich als falsch empfand:
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";
}
So hätte ich es gemacht:
<html>
some code
<?php
function login()
{
if (empty ($_POST['username']))
{
return false;
}
if (empty ($_POST['password']))
{
return false;
}
$username = trim ($_POST['username']);
$password = trim ($_POST['password']);
$scrambled = md5 ($password . 'foo');
$link = mysqli_connect('localhost', 'root', 'password');
if (!$link)
{
$error = "Unable to connect to the database server";
include 'error.html.php';
exit ();
}
if (!mysqli_set_charset ($link, 'utf8'))
{
$error = "Unable to set database connection encoding";
include 'error.html.php';
exit ();
}
if (!mysqli_select_db ($link, 'foo'))
{
$error = "Unable to locate the foo database";
include 'error.html.php';
exit ();
}
$sql = "SELECT COUNT(*) FROM admin WHERE username = '$username' AND password = '$scrambled'";
$result = mysqli_query ($link, $sql);
if (!$result)
{
return false;
exit ();
}
$row = mysqli_fetch_array ($result);
if ($row[0] > 0)
{
return true;
}
else
{
return false;
}
}
if (login())
{
echo '<h2>Welcome Administrator</h2>
<a href=\"upload.php\">Upload Files</a>
<br />
<a href=\"points.php\">Edit Points Tally</a>';
}
else
{
echo "Incorrect login details. Please login";
}
?>
some more html code
</html>
In meinem Fall war der Täter das einzige <?php
-Tag in der letzten Zeile der Datei. Anscheinend funktioniert es bei einigen Konfigurationen ohne Probleme, verursacht jedoch Probleme bei anderen.
Wenn Ihre parse_ini_file ($ -Datei) oder eine Routine eine .ini-Datei verwendet, überprüfen Sie, ob Ihre Daten in der INI-Datei zitiert sind. Nicht zitierte Daten verursachen diesen Fehler. Ex; data1 = test wird den Fehler verursachen, data1 = "test" nicht.
Sie können IF/ELSE-Anweisungen nicht in zwei separate Blöcke unterteilen. Wenn Sie HTML-Code zum Drucken benötigen, verwenden Sie Echo.
<html>
<?php
function login()
{
// Login function code
}
if (login())
{
echo "<h2>Welcome Administrator</h2>
<a href=\"upload.php\">Upload Files</a>
<br />
<a href=\"points.php\">Edit Points Tally</a>";
}
else
{
echo "Incorrect login details. Please login";
}
?>
Some more HTML code
</html>
Ein weiterer Fall, in dem es schwer zu erkennen ist, ist, wenn Sie eine Datei mit nur einer Funktion haben. Ich weiß, es ist kein allgemeiner Anwendungsfall, aber es ist ärgerlich und musste den Fehler erkennen.
<?php
function () {
}
Die obige Datei gibt den erro Parse error: syntax error, unexpected end of file in
zurück, während der unten stehende nicht gilt.
<?php
function () {
};