Error de análisis: error de sintaxis, final inesperado del archivo en mi código PHP
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?
Debes evitar esto (al final de tu código):
{?>
y esto:
<?php}
No debes poner corchetes directamente cerca de la php
etiqueta abrir/cerrar, sino separarlos con un espacio:
{ ?>
<?php {
también evitar <?
y utilizar<?php
Tuve el mismo error, pero lo solucioné modificando el php.ini
archivo.
Encuentra tu archivo php.ini. Consulta Amigo, ¿dónde está mi php.ini?
luego ábrelo con tu editor favorito.
Busque una short_open_tag
propiedad y aplique el siguiente cambio:
; short_open_tag = Off ; previous value
short_open_tag = On ; new value
Tuve el mismo error, pero lo solucioné modificando el php.ini y/o editando el archivo PHP!
Hay dos métodos diferentes para solucionar la sintaxis del error de análisis.
Método 1 (Su archivo PHP)
Evite en su archivo PHP esto:
<? } ?>
Asegúrate de ponerlo así.
<?php ?>
Tu código contiene
<? ?>
NOTA: ¡ Los que faltan
php
después<?
!
Método 2 (archivo php.ini)
También existe una forma sencilla de resolver su problema. Busque el short_open_tag
valor de la propiedad (Úselo 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 principales de php.ini , short_open_tag
le permite usar la etiqueta abierta corta ( <?
), 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.
Simplemente vaya a php.ini y luego busque short_open_tag= Off
set toshort_open_tag= On
Además, tenga cuidado con los identificadores de cierre de Heredoc.
Ejemplo no válido:
// it's not working!!!
function findAll() {
$query=<<<SQL
SELECT * FROM `table_1`;
SQL; // <-------- THIS IS BAD
// ...
}
Esto generará una excepción similar a la siguiente:
<br />
<b>Parse error</b>: syntax error, unexpected end of file in <b>[...][...]</b> on line <b>5</b><br />
donde el número 5 podría ser el número de la última línea de su archivo.
Según el manual de php :
Advertencia Es muy importante tener en cuenta que la línea con el identificador de cierre no debe contener otros caracteres, excepto un punto y coma (;). Esto significa especialmente que el identificador no puede tener sangría y no puede haber espacios ni tabulaciones antes o después del punto y coma. También es importante darse cuenta de que el primer carácter antes del identificador de cierre debe ser una nueva línea según lo define el sistema operativo local. Esto es \n en sistemas UNIX, incluido macOS. El delimitador de cierre también debe ir seguido de una nueva línea.
TLDR : los identificadores de cierre NO deben tener sangría.
Ejemplo válido:
function findAll() {
$query=<<<SQL
SELECT * FROM `table_1`;
SQL;
// closing identifier should not be indented, although it might look ugly
// ...
}