J'ai 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?
php
html
parse-error
Pratnala
la source
la source
short_tags
dans votre php.ini sous les deuxapache
etcli
configsRéponses:
Vous devez éviter cela (à la fin de votre code):
et ça:
Vous ne devez pas mettre de crochets directement à proximité de la
php
balise open / close , mais séparez-la par un espace:aussi éviter
<?
et utiliser<?php
la source
<? } ?>
au lieu de<?php } ?>
.J'ai eu la même erreur, mais je l'ai corrigée en modifiant le
php.ini
fichier.Trouvez votre fichier php.ini voir Mec, où est mon php.ini?
puis ouvrez-le avec votre éditeur préféré.
Recherchez une
short_open_tag
propriété et appliquez la modification suivante:la source
<? ?>
(note, les manquantsphp
). Je suis chargé d'ajouter ou de modifier des fonctionnalités, et ce n'est généralement pas une bonne idée de simplement tout changer pour une ou deux fonctionnalités. Votre réponse a vraiment aidé.Il existe deux méthodes différentes pour contourner la syntaxe d'erreur d'analyse.
Méthode 1 (votre fichier PHP)
Évitez dans votre fichier PHP ceci:
Assurez-vous de le mettre comme ça
Méthode 2 (fichier php.ini)
Il existe également un moyen simple de résoudre votre problème. Recherchez la
short_open_tag
valeur de la propriété (à utiliser dans votre éditeur de texte avecCtrl + F
!) Et appliquez la modification suivante:à
Selon la description des directives principales de php.ini ,
short_open_tag
vous permet d'utiliser la courte balise open (<?
) bien que cela puisse causer des problèmes lorsqu'il est utilisé avec xml (<?xml
ne fonctionnera pas lorsque cela est activé)!la source
Allez simplement sur php.ini, puis trouvez
short_open_tag= Off
set toshort_open_tag= On
la source
Recherchez les boucles ou les déclarations non fermées.
J'avais rencontré ce problème lorsque j'ai laissé un php foreach: tag non fermé.
Le fermer à l'aide de ce qui suit a résolu l'erreur de syntaxe:
unexpected end of file
J'espère que ça aide quelqu'un
la source
Vérifiez que vous avez fermé votre classe.
Par exemple, si vous avez une classe de contrôleur avec des méthodes, et par accident vous supprimez le crochet final, qui ferme toute la classe, vous obtiendrez cette erreur.
la source
aussi, recherchez un commentaire // qui brise l'accolade fermante
if (1==1) { //echo "it is true"; }
l'accolade fermante ne fermera pas correctement la section conditionnelle et php ne traitera pas correctement le reste du code.
la source
Évitez cela et
<? } ?>
assurez-vous de mettre<?php } ?>
la source
J'ai vu quelques erreurs, que j'ai corrigées ci-dessous.
Voici ce que j'ai eu comme étant erroné:
Voici comment je l'aurais fait:
la source
Dans mon cas, le coupable était la seule
<?php
balise d' ouverture dans la dernière ligne du fichier. Apparemment, cela fonctionne sur certaines configurations sans problème mais pose des problèmes sur d'autres.la source
Faites également attention aux identifiants de fermeture heredoc.
Exemple non valide:
Cela lèvera une exception qui ressemble à ce qui suit:
où le numéro 5 peut être le dernier numéro de ligne de votre fichier.
Selon le manuel php :
TLDR : Les identificateurs de fermeture ne doivent PAS être indentés.
Exemple valide:
la source
De plus, un autre cas où il est difficile de le repérer est celui où vous avez un fichier avec juste une fonction, je sais que ce n'est pas un cas d'utilisation courant, mais c'est ennuyeux et il fallait repérer l'erreur.
Le fichier ci-dessus renvoie l'erro
Parse error: syntax error, unexpected end of file in
alors que le fichier ci -dessous ne le fait pas.la source
Pour moi, la cause la plus fréquente est un caractère} omis, de sorte qu'une fonction ou un bloc d'instructions if ne se termine pas. Je corrige cela en insérant un caractère} après mes récentes modifications et en le déplaçant à partir de là. J'utilise un éditeur qui peut localiser les crochets ouvrants correspondant à un crochet fermant, de sorte que cette fonctionnalité aide également (elle localise la fonction qui ne s'est pas terminée correctement).
Nous pouvons espérer qu'un jour les interprètes et les compilateurs de langage feront du travail pour générer de meilleurs messages d'erreur, car il est si facile d'omettre une parenthèse fermante.
Si cela aide quelqu'un, veuillez voter pour la réponse.
la source
Vous ne pouvez pas diviser les instructions IF / ELSE en deux blocs distincts. Si vous avez besoin d'imprimer du code HTML, utilisez echo .
la source
Pour compléter d'autres réponses, cela pourrait également être dû à la minification automatique de votre script php si vous utilisez un client ftp comme FileZilla. Assurez-vous que le type de transfert est défini sur Binaire et non ASCII ou auto. Le type de transfert ASCII ou automatique peut minimiser votre code php conduisant à cette erreur.
la source
Si vous utilisez parse_ini_file ($ file) ou une routine radie un fichier .ini, vérifiez si vos données sont citées dans le fichier ini. Les données sans guillemets provoqueront cette erreur. Ex; data1 = test provoquera l'erreur, data1 = "test" ne le fera pas.
la source
Dans mon cas, j'ai copié le contenu dans un autre fichier, puis j'ai supprimé le fichier php et en ai créé un nouveau, copié à nouveau le contenu dans le même fichier, et cela a fonctionné.
la source