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:
- En alguna parte del código falta una llave de cierre (símbolo }, también llamado curly bracket).
- 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
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¡
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
Gracias es una importante aportacion a veces un error pequeño te consume bastante tiempo .
Saludos
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!
[…] Samuel Aguilera de samuelaguilera.com tenia un post hecho para todos quienes pasemos por este ‘problemita’. […]
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!!!!!!
MUCHISISISISISMAS GRACIAS!!!!!
ME SALVASTE !!!! ;)
MUAAAAAAAAAAAAAAAAAAAAAAAAA
asu muchas graciass
gracias……chuchas…estaba loco…
La verdad es que a mi si me ayudo esto, faltaba una “}” en el codigo.
Gracias!
xa gracias, no podia entrar a la administracion de usuarios
Gracias por la solucion
Gracias me ayudo mil este post .. jejeje saludos
Me salvaste el dia, gracias.
Gracias
Llevaba varios dias intentando descubrir cual era el problema, en una web funcionaba y en otra no.
Muchas gracias! :-)
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 /ruta/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
@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.
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
Gracias… :D
Gracias por el aporte, solucione un problema de dias..
En Mi Caso lo solucione modificando el Archivo php.ini y habilitando la opcion short open tag
Gracias por la ayuda!
Muuuuchisimas gracias por esta ayuda. Faltaba el “php” en la etiqueta: ” <?php ” ahora va perfecto!!!
Muchas Gracias.
El error tambien se produce por no estar emparejada alguna comilla (“)
Atte
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.
Muchas gracias por este post, me salvaste de muchas horas de tratar de encontrar el problema
!Excelente! Ahora a jugar con AdoDB…
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
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
@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.
Qué bueno!! Gracias Samuel, llevaba una hora buscando el error y no había manera. Me faltaba cerrar unas comillas!!!! Qué cabeza…!
Saludos!
Gracias, Fué de Gran Ayuda, si se soluciono el problema que tenia.
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.
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.
@Francisco: Descárgate Netbeans para PHP (pulsa en el download de la columna de php), te ayudará a localizar el error.
¡¡¡YIIIIIIIIIIIIIIIIIIIIIHHHHAAAAAAAAAAAAA!!!!!
5 horas, 5 horas y por fin resuelto. ¡¡¡Mil gracias!!!
Daba el error el la línea 470 y estaba en la 58!
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.
gracielas me faltaba una llave de un if jejejjje
Amigo muchas gracias por tu ayuda me sirvio muchisimo ;-)
Gracias casi me rompo la cabeza con ese errorcito, un buen aporte para nosotros los novatos
Bueno me uno a los agradecmientos ya que este fue de gran ayuda
es increible gente pase unas 5 horas rompiendome la cabeza porke me salia ese error buske en san google la respuesta encontre esta pagina y lei probe y nada no sabi ke pasaba hasta ke vi el comentario de samuel mas arriba ke dice ke descarge una herramienta es esta: http://bits.netbeans.org/netbeans/6.5/community/latest/ml/ descargenla es para probar los php y 100% funciona te dice ke falta o ke no va ahi y gracias a eso lo arregle en mi caso era por la aplicacion HEADER ke sirve para redireccionar la pagina me hacia falta el ; al final hahahaha y un exit; tambien hahaha espero esa aplicacion les ayude descarguenla es gratis
No se pero a mi me pasa algo rraro con ese error, trabajo con joomla y cada vez k me sale el error sustituyo todos lo index k tiene el servidor por k lo k son originales de la carpeta de joomla y la pagina funciona bien, pero alcabo de dos hora mas o menos vuelve y me tira el mismo error alguien podria explicarme por k eso?
@Romeo: Comenta el problema con el servicio de soporte de tu hosting.
tengo problemas con lo mismo de todos lo e revisado 140002388 veces pero aun no puedo entender q es lo q pasa, porfa les pido q me ayudennnnn … de verdad lo agradeceria muxooooo colocare el codigo por si me pueden ayudar.. thanks
***EDITADO POR EL ADMINISTRADOR****
porfa toy mas complicao q ..la …..
@felkipe: leete los otros comentarios y bájate el editor que recomendé… (netbeans) con eso encontrarás el problema si es de sintaxis del código.
AHHHHHAJAJAJAJJAJAJJAJAJAJA
No puedo creer la tonteria que era, casi me pongo a descargar la ultima version del xammp,
MILLL GRACIAS!!!!!!!!!!
jajajajajaja!!! muchas gracias!! me estaba rompiendo la cabeza leyendo un sinfín de foros…. gracias por tu aporte!!
Saludos cordiales amigo, he revisado el codigo y en realidad no se que esta mal, ya que lo he usado en otras paginas y funciona, pero esta ultima me sale este error que no lo entiendo muy claro, si me puedes ayudar te agradeceria infinitamente.
Parse error: syntax error, unexpected T_STRING in /home/www/plastiluz.net/index-6.php on line 1
Gracias por este aporte, me sacó de apuro. Tenía el problema con los short tags al querer migrar mi aplicación desde desarrollo a producción y mi codigo era extenso, entonces opté por dejar la opción de ‘short_open_tag = on’ y todo funcionó.
Saludos.
Bueno, creo que el tema del artículo está más que claro, y los comentarios se están convirtiendo ya en una especie de “foro” para todo tipo de errores, y no es su función. Así que cierro comentarios.
Me salio el error pero tambien se debio a una llave no cerrada de un switch tengan cuidado con los corchetes en las operaciones.