it-swarm.com.de

Parse-Fehler: Syntaxfehler, unerwartetes Ende der Datei in meinem PHP Code

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?

142
pratnala

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

271
j0k

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
72

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.

Methode 1 (Ihre PHP -Datei)

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 <?!

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 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.

24
Suriyaa

Gehen Sie einfach zur php.ini und suchen Sie short_open_tag= Off auf short_open_tag= On.

9
Hamzah Akram

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
5
olga

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.

4
Steve Wasiura

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.

<?php foreach($many as $one): ?>

Beim Schließen mit folgendem wurde der Syntaxfehler behoben: unexpected end of file

<?php endforeach; ?>

Hoffe es hilft jemandem

3
Imtiaz

Vermeiden Sie auch dies <? } ?> Stellen Sie sicher, dass Sie <?php } ?> eingeben.

2
Gpak

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>
2
ryanc1256

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.

1
J. Wrong

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.

0
Wynn

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>
0
TK-421

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 () {

};
0
neisantos