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?
php
html
parse-error
pratnala
fuente
fuente
short_tags
en su php.ini en AMBOSapache
ycli
configuracionesRespuestas:
Debe evitar esto (al final de su código):
y esto:
No debe colocar corchetes directamente cerca de la
php
etiqueta abrir / cerrar , sino separarla con un espacio:también evitar
<?
y usar<?php
fuente
<? } ?>
lugar de<?php } ?>
.Tuve el mismo error, pero lo solucioné modificando el
php.ini
archivo.Encuentra tu archivo php.ini, mira Amigo, ¿dónde está mi php.ini?
luego ábralo con su editor favorito.
Busque una
short_open_tag
propiedad y aplique el siguiente cambio:fuente
<? ?>
(nota, la faltaphp
). Tengo la tarea de agregar o cambiar funciones, y generalmente no es una buena idea simplemente cambiar todo solo por una o dos funciones. Tu respuesta realmente ayudó.Hay dos métodos diferentes para evitar la sintaxis de error de análisis.
Método 1 (su archivo PHP)
Evite en su archivo PHP esto:
Asegúrate de ponerlo así
Método 2 (archivo php.ini)
También hay una manera simple de resolver su problema. Busque el
short_open_tag
valor de la propiedad (¡Use en su editor de texto conCtrl + F
!) Y aplique el siguiente cambio:a
De acuerdo con la descripción de las directivas centrales de php.ini , le
short_open_tag
permite usar la etiqueta abierta corta (<?
), aunque esto puede causar problemas cuando se usa con xml (¡<?xml
no funcionará cuando esté habilitado)!fuente
Simplemente vaya a php.ini y luego encuentre
short_open_tag= Off
set toshort_open_tag= On
fuente
Busque los bucles o declaraciones que no se hayan cerrado.
Me encontré con este problema cuando dejé un php foreach: etiqueta sin cerrar.
Cerrarlo usando lo siguiente resolvió el error de sintaxis:
unexpected end of file
Espero que ayude a alguien
fuente
Comprueba que cerraste tu 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.
fuente
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á correctamente el resto del código.
fuente
Evita esto también
<? } ?>
asegúrate de poner<?php } ?>
fuente
Vi algunos errores, que he corregido a continuación.
Esto es lo que obtuve por ser erróneo:
Así es como lo habría hecho:
fuente
En mi caso, el culpable fue la única
<?php
etiqueta de apertura en la última línea del archivo. Aparentemente funciona en algunas configuraciones sin problemas pero causa problemas en otras.fuente
Además, tenga cuidado con los identificadores de cierre heredoc.
Ejemplo inválido:
Esto generará una excepción similar a la siguiente:
donde el número 5 podría ser el último número de línea de su archivo.
Según el manual de php :
TLDR : los identificadores de cierre NO deberían estar sangrados.
Ejemplo válido
fuente
Además, otro caso en el que es difícil de detectar es cuando tiene un archivo con solo una función, sé que no es un caso de uso común, pero es molesto y tuvo que detectar el error.
El archivo anterior devuelve el error
Parse error: syntax error, unexpected end of file in
mientras que el siguiente no.fuente
Para mí, la causa más frecuente es un carácter omitido}, por lo que una función o si el bloque de instrucciones no se termina. Arreglo esto insertando un carácter} después de mis ediciones recientes y moviéndolo desde allí. Utilizo un editor que puede ubicar los corchetes de apertura correspondientes a un corchete de cierre, por lo que esa característica también ayuda (localiza la función que no se terminó correctamente).
Podemos esperar que algún día los intérpretes y compiladores de idiomas hagan algún trabajo para generar mejores mensajes de error, ya que es muy fácil omitir un paréntesis de cierre.
Si esto ayuda a alguien, por favor vote la respuesta.
fuente
No puede dividir las instrucciones IF / ELSE en dos bloques separados. Si necesita imprimir un código HTML, use echo .
fuente
Para complementar otras respuestas, también podría deberse a la minimización automática de su script php si está utilizando un cliente ftp como FileZilla. Asegúrese de que el tipo de transferencia esté configurado en Binario y no en ASCII o automático. El tipo de transferencia automática o ASCII puede minimizar su código php y provocar este error.
fuente
Si está usando parse_ini_file ($ file) o una rutina está emitiendo un archivo .ini, verifique si sus datos se citan en el archivo ini. Los datos sin comillas causarán este error. Ex; data1 = test causará el error, data1 = "test" no lo hará.
fuente
En mi caso, copié el contenido en otro archivo y luego eliminé el archivo php y creé uno nuevo, volví a copiar el contenido en el mismo archivo y funcionó.
fuente