Erreur d'analyse: erreur de syntaxe, fin inattendue du fichier dans mon code PHP

j'ai eu une erreur:

Parse error: syntax error, unexpected end of file in the line

avec ce 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>

Quel est le problème?

130
demandé sur Alex 2012-07-14 13:20:26

11 réponses

vous devez éviter cela (à la fin de votre code):

{?>

et ceci:

<?php}

vous ne devriez pas mettre des crochets directement près de l'étiquette php ouverte/fermée, mais il se sépare avec un espace:

{ ?>
<?php {

également éviter <? et utiliser <?php

254
répondu j0k 2014-10-29 14:36:40

j'ai eu la même erreur, mais je l'ai fait corriger en modifiant le fichier php.ini .

Trouvez votre php.fichier ini voir mec, où est mon php.ini?

alors ouvrez - le avec votre éditeur préféré.

cherchez un short_open_tag bien et appliquez le changement suivant:

; short_open_tag = Off ; previous value
short_open_tag = On ; new value
64
répondu Archana Balachandran 2017-05-23 12:34:47

j'ai eu la même erreur, mais je l'avais résolu en modifiant le php.ini et / ou éditer le fichier PHP!

il y a deux méthodes différentes pour contourner la syntaxe d'erreur de parse.

Méthode 1 (votre fichier PHP)

éviter dans votre fichier PHP ceci:

<? } ?>

assurez-vous de le mettre comme ceci

<?php ?>

votre le code contient <? ?>

NOTE: les disparus php après <? !

la Méthode 2 (php.fichier ini)

il y a aussi une façon simple de résoudre votre problème. Rechercher la short_open_tag valeur de la propriété (utiliser dans votre éditeur de texte avec Ctrl + F !) , et appliquer le changement suivant : :

; short_open_tag = Off

à

short_open_tag = On

selon la description du noyau php.les directives ini , short_open_tag vous permettent d'utiliser la balise ouverte courte ( <? ) bien que cela pourrait causer des problèmes lorsqu'il est utilisé avec xml ( <?xml ne fonctionnera pas lorsque cela est activé)!

NOTE: Rechargez votre serveur (comme par exemple: Apache) et Rechargez votre page Web PHP dans votre navigateur.

21
répondu Suriyaa 2018-05-12 10:32:40

il suffit d'aller à php.ini puis trouver short_open_tag= Off mis à short_open_tag= On

9
répondu Hamzah Akram 2015-12-09 19:52:30

, Vérifiez que vous avez fermé votre classe.

par exemple, si vous avez la classe controller avec les méthodes, et par accident vous supprimez le dernier bracket, qui ferme toute la classe, vous obtiendrez cette erreur.

class someControler{
private $varr;
public $varu;
..
public function method {
..
} 
..
}// if you forget to close the controller, you will get the error
5
répondu olga 2015-12-16 20:12:06

aussi, rechercher un commentaire / / qui casse la boucle de fermeture

if (1==1) { //echo "it is true"; }

la boucle de fermeture ne fermera pas correctement la section conditionnelle et php ne traitera pas correctement le reste du code.

4
répondu Steve Wasiura 2017-01-06 02:35:54

rechercher des boucles ou des déclarations sont laissés non clos.

j'avais eu ce problème quand j'ai laissé un fichier php foreach: tag unclosed.

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

fermeture en utilisant l'erreur de syntaxe suivante résolu: unexpected end of file

<?php endforeach; ?>

Espère que cela aide quelqu'un

3
répondu Imtiaz 2017-09-05 23:16:36

j'ai vu quelques erreurs que j'ai corrigé ci-dessous.

C'est ce que j'ai obtenu comme étant erroné:

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";
}

C'est comme ça que j'aurais fait:

<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
répondu ryanc1256 2013-09-20 18:00:53

évitez aussi cela <? } ?> assurez-vous de mettre <?php } ?>

2
répondu Gpak 2016-01-18 06:37:38

en outre, un autre cas où il est difficile de repérer est quand vous avez un fichier avec juste une fonction, je sais que ce n'est pas un cas d'utilisation commune, mais il est ennuyeux et a dû repérer l'erreur.

<?php
function () {

}

le fichier ci-dessus retourne l'erro Parse error: syntax error, unexpected end of file in alors que le fichier ci-dessous ne le fait pas.

<?php
function () {

};
0
répondu neisantos 2018-05-16 08:50:05

si vous utilisez parse_ini_file($file) ou si une routine fait rage .fichier ini, vérifiez si vos données sont citées dans le fichier ini. Les données non référencées causeront cette erreur. Ex; data1=test causera l'erreur, data1="test" ne causera pas l'erreur.

0
répondu Wynn 2018-05-30 09:37:36