parseerror - Error de análisis: error de sintaxis, final inesperado del archivo en mi código PHP
syntax error unexpected ''<'' (10)
Recibí un error:
Parse error: syntax error, unexpected end of file in the line
Con este código:
<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>
¿Cuál es el problema?
Tuve el mismo error, ¡pero lo solucioné modificando php.ini y / o editando el archivo PHP!
Hay dos métodos diferentes para evitar la sintaxis del error de análisis.
Método 1 (Su archivo PHP)
Evita en tu archivo PHP esto:
<? } ?>
Asegúrate de ponerlo así
<?php ?>
Tu código contiene
<? ?>
<? ?>
NOTA: ¿ El
php
falta después de<?
!
Método 2 (archivo php.ini)
También hay una forma simple de resolver su problema. Busque el valor de la propiedad short_open_tag
(Use en su editor de texto con Ctrl + F
!) Y aplique el siguiente cambio:
; short_open_tag = Off
a
short_open_tag = On
De acuerdo con la descripción de las directivas core php.ini , short_open_tag
permite usar la etiqueta short_open_tag
breve ( <?
) Aunque esto podría causar problemas cuando se usa con xml ( <?xml
no funcionará cuando esté habilitado).
NOTA: vuelva a cargar su servidor (como, por ejemplo, Apache) y vuelva a cargar su página web PHP en su navegador.
Busque los bucles o declaraciones que se dejan sin cerrar.
Me encontré con este problema cuando dejé un php foreach: etiqueta cerrada.
<?php foreach($many as $one): ?>
Al cerrarlo con lo siguiente, se solucionó el error de sintaxis: unexpected end of file
<?php endforeach; ?>
Espero que ayude a alguien
Además, otro caso en el que es difícil detectarlo es cuando tienes un archivo con solo una función, sé que no es un caso de uso común, pero es molesto y tuve que detectar el error.
<?php
function () {
}
El archivo anterior devuelve el error erro Parse error: syntax error, unexpected end of file in
mientras que el siguiente no.
<?php
function () {
};
Debe evitar esto (al final de su código):
{?>
y esto:
<?php}
No debe poner corchetes directamente cerca de la etiqueta de abrir / cerrar de php
, pero se separa con un espacio:
{ ?>
<?php {
también evite <?
y usa <?php
Evitar esto también <? } ?>
<? } ?>
asegúrate de poner <?php } ?>
Simplemente vaya a php.ini y busque short_open_tag= Off
configurado a short_open_tag= On
Tuve el mismo error, pero lo solucioné modificando el archivo php.ini
.
Encuentre su archivo php.ini vea Dude, ¿dónde está mi php.ini?
luego ábrelo con tu editor favorito.
Busque una propiedad short_open_tag
y aplique el siguiente cambio:
; short_open_tag = Off ; previous value
short_open_tag = On ; new value
Verifique que cerró su clase.
Por ejemplo, si tiene una clase de controlador con métodos, y por accidente elimina el corchete final, que cierra toda la clase, obtendrá este error.
class someControler{
private $varr;
public $varu;
..
public function method {
..
}
..
}// if you forget to close the controller, you will get the error
Vi algunos errores, que he corregido a continuación.
Esto es lo que obtuve por ser erróneo:
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";
}
Así es como lo habría hecho:
<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>
también, busque un comentario // que rompa la llave de cierre
if (1==1) { //echo "it is true"; }
la llave de cierre no cerrará correctamente la sección condicional y php no procesará adecuadamente el resto del código.