Error de análisis: error de sintaxis, final inesperado del archivo en mi código PHP

Resuelto pratnala asked hace 54 años • 20 respuestas

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?

pratnala avatar Jan 01 '70 08:01 pratnala
Aceptado

Debes evitar esto (al final de tu código):

{?>

y esto:

<?php}

No debes poner corchetes directamente cerca de la phpetiqueta abrir/cerrar, sino separarlos con un espacio:

{ ?>
<?php {

también evitar <?y utilizar<?php

j0k avatar Jul 14 '2012 09:07 j0k

Tuve el mismo error, pero lo solucioné modificando el php.iniarchivo.

Encuentra tu archivo php.ini. Consulta Amigo, ¿dónde está mi php.ini?

luego ábrelo con tu editor favorito.

Busque una short_open_tagpropiedad y aplique el siguiente cambio:

; short_open_tag = Off ; previous value
short_open_tag = On ; new value
Archana Balachandran avatar Nov 03 '2015 07:11 Archana Balachandran

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 phpdespués <?!

Método 2 (archivo php.ini)

También existe una forma sencilla de resolver su problema. Busque el short_open_tagvalor 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_tagle permite usar la etiqueta abierta corta ( <?), aunque esto podría causar problemas cuando se usa con xml ( <?xmlno 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.

Suriyaa avatar Mar 05 '2016 16:03 Suriyaa

Simplemente vaya a php.ini y luego busque short_open_tag= Offset toshort_open_tag= On

Hamzah Akram avatar Dec 09 '2015 19:12 Hamzah Akram

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

    // ...
}
glinda93 avatar Apr 09 '2020 17:04 glinda93