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




syntax error: unexpected end of file bash (8)

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?


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.


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

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 () {

};

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.


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>

Evitar esto también <? } ?> <? } ?> asegúrate de poner <?php } ?>


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






parse-error