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?
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
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
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.
il suffit d'aller à php.ini puis trouver short_open_tag= Off
mis à short_open_tag= On
, 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
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.
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
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>
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 () {
};
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.