"Internal Server Error", o error 500, es uno de los mensajes más frustrantes que puede mostrar una web. A diferencia del 404, que dice claramente que la página no existe, el 500 es vago a propósito: el servidor sabe que algo ha ido mal, pero no se lo cuenta a quien está visitando. Es una norma de seguridad, porque los detalles de un error pueden ayudar a un atacante.
Qué significa
La petición llegó al servidor, el servidor intentó responder y, a mitad de camino, ocurrió algo imprevisto. Puede ser una línea de código con un fallo, una configuración no válida, falta de memoria o una base de datos que no respondió como debía. El resultado es siempre el mismo para quien visita: una página en blanco o un mensaje genérico.
Las causas más frecuentes
Una actualización que salió mal. Se actualizó un plugin, un tema o la propia aplicación y dejó de ser compatible con otra pieza.
Un error de código. Un cambio hecho con prisas, sin probar, con un fallo que solo aparece en producción.
Configuración del servidor no válida. Un archivo de configuración con una errata, como el
.htaccessen servidores Apache, basta para tumbar la web.Falta de recursos. El proceso que genera la página necesita más memoria o tiempo del que permite el servidor, y se interrumpe.
Permisos de archivos incorrectos. El servidor no puede leer o ejecutar un archivo que necesita.
Versión del lenguaje incompatible. El alojamiento actualizó, por ejemplo, la versión de PHP, y partes antiguas de la web dejaron de funcionar.
El primer paso: los registros de errores
El mensaje que ve el visitante es genérico, pero el servidor guarda el detalle. Los registros de errores (error logs) indican exactamente qué archivo, qué línea y cuál es el problema. Sin leerlos, resolver un error 500 es adivinar.
En un alojamiento compartido, suelen estar en el panel de control. En un servidor propio, están en los archivos de registro del servidor web y de la aplicación. Quien gestiona la web debe saber dónde están y poder llegar a ellos en minutos.
Qué hacer, por orden
Pensar en qué ha cambiado. ¿El error apareció después de una actualización, un cambio o una instalación? En la gran mayoría de los casos, la causa es lo último que cambió.
Leer el registro de errores en el momento en que se produce el error.
Deshacer el último cambio. Si fue un plugin, desactivarlo. Si fue un cambio de código, revertirlo. Si fue una actualización, volver a la versión anterior a partir de una copia de seguridad.
Comprobar los recursos: espacio en disco, memoria disponible y límites del lenguaje.
Confirmar que el error ha desaparecido en varias páginas, no solo en la de inicio.
En WordPress
En una web WordPress, las causas más comunes son un plugin en conflicto, un tema incompatible o el límite de memoria de PHP. Desactivar todos los plugins y volver a activarlos uno a uno revela al culpable. Si no puedes entrar en el panel, se puede hacer renombrando la carpeta de plugins por FTP o desde el gestor de archivos del alojamiento.
Qué no hacer
No activar la visualización de errores en la web pública. Ayuda a diagnosticar, pero muestra a cualquier visitante rutas de archivos y detalles internos. Los errores se miran en los registros, no en la página.
No hacer varios cambios a la vez. Si cambias cinco cosas y el error desaparece, no sabrás cuál lo resolvió, ni si alguna de las otras ha creado un problema nuevo.
No ignorar los errores 500 intermitentes. Un error que aparece de vez en cuando suele ser falta de recursos o un problema que irá a peor.
Cómo prevenirlo
Probar las actualizaciones en un entorno de pruebas antes de aplicarlas a la web pública.
Tener copias de seguridad recientes y saber restaurarlas.
Tener una monitorización que avise cuando la web empiece a responder con errores, en lugar de esperar a que llame un cliente.
Un error 500 asusta, pero casi siempre se resuelve rápido cuando hay registros, copias de seguridad y alguien que sabe dónde buscar. Si tu web no tiene nada de esto, habla con nosotros antes de que aparezca el error.
Imagen: Wikimedia Commons, dominio público (CC0).