Como solucionar Parse Error: syntax error, unexpected $end

En ocasiones puede darse el caso de que estemos usando una plantilla (theme) de WordPress o un plugin, funcionando perfectamente, y sin embargo al actualizar la versión de PHP o al mover nuestra web a otra compañía de alojamiento web, deje de funcionan y nos muestre el siguiente error:

Parse Error: syntax error, unexpected $end

Es un error bastante común, porque es muy fácil reunir las condiciones para hacerlo saltar.

Basicamente suele deberse a uno de estos dos motivos:

  1. En alguna parte del código falta una llave de cierre (símbolo }, también llamado curly bracket).
  2. El PHP instalado no admite en su configuración el uso de etiquetas PHP en formato abreviado (”<?” en lugar de “<?php” ).

Por fortuna para nosotros ambos casos tienen fácil solución, aunque en el primer supuesto si el código a revista es muy extenso puede ser un auténtico quebradero de cabeza…

Así que como digo, si sospechamos que en nuestro caso el error es el primer supuesto, nos tocará revisar todo el código del archivo php que hace saltar el error (y de cualquiera que llamemos desde este mediante includes), para localizar la definición de clase que nos hemos olvidado de cerrar.

Por lo tanto es un problema que inevitablemente tenemos que solucionar “a mano” y con paciencia, no obstante si usamos un buen editor que nos resalte las distintas partes de código PHP con distintos colores, probablemente nos sea mucho más fácil de localizar el error.

Y en el segundo caso, cuando se trata del uso de las etiquetas abreviadas de PHP (short open tags), lo mejor para solucionar el error y dar máxima compatibilidad a nuestro código es sustituir cualquier etiqueta PHP en formado abreviado por su correspondiente en formato extendido, es decir:

Sustituir <? por <?php

Para hacerlo podemos usar sin problemas la opción “buscar y reemplazar” del editor que usemos, ya que no cabe duda de que cada vez que encuentre el primer formato, la acción a realizar será cambiarlo por el segundo (no puede haber nada en el código que se confunda con esto).

Aunque si hay demasiado código que modificar o como solución de emergencia, siempre que tengas acceso a modificar el archivo php.ini, puedes activar la compatibilidad con las etiquetas abrevidadas con la siguiente línea en tu php.ini (posiblemente ya exista, pero con valor off):

short_open_tag = On

Imagen de suscripción al RSSSi te ha gustado este artículo, considera suscribirte al canal RSS del blog
  • doris
    15-08-2007 a las 16:54 | #1

    Me ayudo mucho la nota de esta pagina, tenia rato intentando acomodar el error del $end, y nada hasta que me di cuenta que era un corchete, jejeje…algo tonto pero suele suceder…GRACIAS¡

  • Cibernetiko
    18-09-2007 a las 17:52 | #2

    Soy estudiante y estoy aprendiendo PHP y errores como falta de uan llave son comunes si fueran tan amabels de pasar direcciones para ver manuales se los agradeceria thank you

  • skate1010
    19-09-2007 a las 19:12 | #3

    Gracias es una importante aportacion a veces un error pequeño te consume bastante tiempo .

    Saludos

  • Rosan
    16-10-2007 a las 16:33 | #4

    Hola,este artículo me fue de gran ayuda, espero sigan aportando muchas más ideas y soluciones a estos pequeños problemas con la programación que muchas veces nos hacen perder la cabeza. Gracias!

  • 20-11-2007 a las 23:59 | #5

    Gracias!!!!!!!!!!!

    Y lo digo así porque estaba hasta la coronilla. Todo un día revisando código y demases.

    Un Millón de Gracias y NO Te Mueras nunca!!!!!!

  • Anya
    07-02-2008 a las 13:22 | #6

    MUCHISISISISISMAS GRACIAS!!!!!
    ME SALVASTE !!!!
    MUAAAAAAAAAAAAAAAAAAAAAAAAA

  • Mario
    24-02-2008 a las 22:41 | #7

    asu muchas graciass

  • noel
    18-05-2008 a las 7:46 | #8

    gracias……chuchas…estaba loco…

  • neo
    20-05-2008 a las 16:56 | #9

    La verdad es que a mi si me ayudo esto, faltaba una “}” en el codigo.

    Gracias!

  • 24-05-2008 a las 20:12 | #10

    xa gracias, no podia entrar a la administracion de usuarios

  • Alushe
    03-07-2008 a las 19:35 | #11

    Gracias por la solucion

  • DrHouse
    17-07-2008 a las 10:38 | #12

    Gracias me ayudo mil este post .. jejeje saludos

  • usuario1
    12-09-2008 a las 2:33 | #13

    Me salvaste el dia, gracias.

  • DracS11
    10-10-2008 a las 11:49 | #14

    Gracias

    Llevaba varios dias intentando descubrir cual era el problema, en una web funcionaba y en otra no.

  • Cynthia
    16-10-2008 a las 19:38 | #15

    Muchas gracias!

  • 25-10-2008 a las 23:59 | #16

    espeor no salirme del tema, la cosa es que me salta este error en un foro que tengo en phpbb3

    Parse error: syntax error, unexpected ‘}’ in /usr/home/forodecdelu/www/phpBB3/cache/tpl_prosilver_viewtopic_body.html.php on line 170

    pero me fijo en ese archivo en la linea 170 y no hay un solo corchete que habra o que cierre solo en esa linea aparece esto

    asique pense que talvez seria en la linea no del archivo cache que aparece ahi sino del archivo original el “prosilver_viewtopic_body.html” y en la linea 170 justamente no hay nada, me podrias ayudar o dar un consejo de como podria hacer?

    muchas gracias

  • 26-10-2008 a las 20:37 | #17

    @alejandro: si el cierre de llave que sobra (o la apertura que falta) no está en esa línea, debería estar por encima de la misma.

    también cabría la posibilidad de que el error esté en algún archivo que se incluya desde el que se muestra en el error mediante un include.

    te recomiendo que revises el código con algún editor que resalte en colores el código de php, así te será mucho más fácil encontrar el error, ya estos suelen “adivinar” la pareja de cada llave.

  • 28-10-2008 a las 1:12 | #18

    gracias por la ayuda aunque al final un amigo me lo arreglo resulta que habia aal principi esto <?php }} y uno de esos estaba de mas, pero no me daba cuenta porque el dreamweaber no me lo detectaba como error y ya habia visto por ahi un doble } asique pense que era normal y como no se mucho php no me di cuenta.

    Gracias por todo (y) salu2

  • Paolo
    29-10-2008 a las 19:22 | #19

    Gracias…

  • Karlox
    21-11-2008 a las 1:01 | #20

    Gracias por el aporte, solucione un problema de dias..

  • Oscar
    25-11-2008 a las 5:28 | #21

    En Mi Caso lo solucione modificando el Archivo php.ini y habilitando la opcion short open tag

    Gracias por la ayuda!

  • Pepe Pérez Álvarez
    29-11-2008 a las 13:16 | #22

    Muuuuchisimas gracias por esta ayuda. Faltaba el “php” en la etiqueta: ” <?php ” ahora va perfecto!!!

  • 02-12-2008 a las 7:59 | #23

    Muchas Gracias.
    El error tambien se produce por no estar emparejada alguna comilla (”

    Atte

  • Jeenson
    05-12-2008 a las 17:35 | #24

    al parecer es un error muy comun que cometemos al no darnos cuenta de las llaves al cerrar y abrir, muchas gracias por ser tan preciso a la solucion en caso del error que se presenta.

  • Hector
    11-12-2008 a las 22:40 | #25

    Muchas gracias por este post, me salvaste de muchas horas de tratar de encontrar el problema

  • Ricardo Núñez
    14-12-2008 a las 16:41 | #26

    !Excelente! Ahora a jugar con AdoDB…

  • Quique
    11-01-2009 a las 4:33 | #27

    muchas gracias, puse el error en google sin esperarme que hubiera una respuesta tan clara. a estas hora tuve que repasar varias veces el programilla para encontrar el “{” que estaba alreves jeje

  • george
    12-01-2009 a las 21:57 | #28

    A MI….ME SIGUE ARROJANDO EL SIGUIENTE ERROR::: Parse error: parse error, unexpected ‘}’ ES LA LLAVE QUE ESTA CERRANDO UNA FUNCION…..SI ME PUEDES AYUDAR SERIA GENIAL
    GRACIAS

  • 14-01-2009 a las 10:31 | #29

    @george: repasa bien TODO. si lo has hecho mil veces ya, hazlo otras mil. para este error no hay más misterio que el ya explicado.

  • Ceci
    25-02-2009 a las 17:29 | #30

    Qué bueno!! Gracias Samuel, llevaba una hora buscando el error y no había manera. Me faltaba cerrar unas comillas!!!! Qué cabeza…!
    Saludos!

  • Marisol
    11-03-2009 a las 19:06 | #31

    Gracias, Fué de Gran Ayuda, si se soluciono el problema que tenia.

  • 11-04-2009 a las 12:58 | #32

    Te agradezco en el alma tu comentario, llevo perdido 2 dias haciendo el tonto por falta de no poner php despues del simbolo “?” muchisssssssssssssssssssimas gracias.

  • 15-04-2009 a las 11:27 | #33

    Nada, que no hay forma, me estoy dejando los ojos en el monitor contando llaves.

    Me da un error en la última línea de la página y no hay forma de encontrarlo.

  • 15-04-2009 a las 11:36 | #34

    @Francisco: Descárgate Netbeans para PHP (pulsa en el download de la columna de php), te ayudará a localizar el error.

  • 15-04-2009 a las 11:47 | #35

    ¡¡¡YIIIIIIIIIIIIIIIIIIIIIHHHHAAAAAAAAAAAAA!!!!!
    5 horas, 5 horas y por fin resuelto. ¡¡¡Mil gracias!!!
    Daba el error el la línea 470 y estaba en la 58!

  • 15-04-2009 a las 11:54 | #36

    Gracias de nuevo Samuel, acabo de descargar Netbeans. Creo que me ayudará a aprender (y aprehender). Para un novato de mi categoría (de novato, claro) cualquier ayuda le viene de perlas. Insisto, mil gracias.

  • samuel
    02-06-2009 a las 15:41 | #37

    gracielas me faltaba una llave de un if jejejjje

Deja un comentario

El autor del blog se reserva el derecho a no publicar los comentarios que contengan direcciones de email falsas o que considere no apropiados. Los comentarios que no guarden relación con la entrada donde se hagan serán borrados sin contemplaciones.