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?
Vous devriez éviter ceci (à la fin de votre code):
{?>
et ça:
<?php}
Vous ne devez pas mettre les crochets directement à côté de la balise php
d'ouverture/fermeture, mais séparez-les par un espace:
{ ?>
<?php {
évitez également <?
et utilisez <?php
J'ai eu la même erreur, mais je l'ai fait réparer en modifiant le fichier php.ini
.
Trouvez votre fichier php.ini voir Mec, où est mon php.ini?
puis ouvrez-le avec votre éditeur préféré.
Recherchez une propriété short_open_tag
et appliquez la modification suivante:
; short_open_tag = Off ; previous value
short_open_tag = On ; new value
Il suffit d'aller dans le fichier php.ini, puis de trouver short_open_tag= Off
défini sur short_open_tag= On
Vérifiez que vous avez fermé votre classe.
Par exemple, si vous avez une classe de contrôleur avec des méthodes et que vous supprimez accidentellement le dernier crochet, 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
J'avais rencontré ce problème lorsque j'ai quitté un php foreach: tag unclosed.
<?php foreach($many as $one): ?>
La fermeture en utilisant ce qui suit a résolu l'erreur de syntaxe: unexpected end of file
<?php endforeach; ?>
J'espère que ça aide quelqu'un
Evitez également ceci <? } ?>
assurez-vous de mettre <?php } ?>
J'ai vu des erreurs que j'ai corrigées ci-dessous.
Voici ce que j'ai 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";
}
Voici comment je l'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>
Dans mon cas, le coupable était la seule balise <?php
d'ouverture de la dernière ligne du fichier. Apparemment, cela fonctionne sur certaines configurations sans aucun problème, mais pose des problèmes sur d'autres.
Si vous utilisez parse_ini_file ($ file) ou une routine en exécutant un fichier .ini, vérifiez si vos données sont citées dans le fichier ini. Les données non citées provoqueront cette erreur. Ex; data1 = test causera l'erreur, data1 = "test" ne le fera pas.
Vous ne pouvez pas diviser les instructions IF/ELSE en deux blocs distincts. Si vous souhaitez imprimer du code HTML, utilisez 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>
Aussi, un autre cas où il est difficile à repérer, c'est quand 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.
<?php
function () {
}
Le fichier ci-dessus renvoie le erro Parse error: syntax error, unexpected end of file in
, contrairement au fichier ci-dessous.
<?php
function () {
};