5xx · Errores del servidor
Error 500 Internal Server Error: qué significa y cómo solucionarlo
El error 500 Internal Server Error significa que algo ha fallado dentro del servidor al procesar la petición y no hay un código más concreto para describirlo. Suele ser una excepción no controlada en el código, un error de sintaxis en .htaccess, un fallo de permisos o una base de datos caída. La causa exacta siempre está en el log de errores.
Qué significa el código 500
Es el "algo ha ido mal" del servidor: el código de la aplicación (PHP, Python, Node) ha lanzado una excepción que nadie ha capturado, o el servidor web no ha podido ejecutar lo que se le pedía. El mensaje que ve el visitante es deliberadamente vago para no revelar detalles internos; el detalle está en los logs.
Si un 500 aparece de golpe tras un cambio (una actualización de un plugin, un despliegue, una edición del .htaccess), lo primero es deshacer ese cambio. Si aparece de forma intermitente, suele ser un recurso que se agota: memoria, conexiones a la base de datos o espacio en disco.
Causas habituales del error 500
- Excepción no controlada en el código de la aplicación.
- Error de sintaxis en .htaccess o una directiva de un módulo de Apache que no está instalado.
- Plugin o tema de WordPress incompatible tras una actualización.
- Base de datos caída o credenciales incorrectas.
- Límite de memoria de PHP agotado (Allowed memory size exhausted).
- Disco lleno: la aplicación no puede escribir sesiones, caché ni logs.
- Permisos incorrectos en scripts (en suPHP, ficheros con 777 provocan 500).
Si eres visitante de la web
- Recarga la página pasados unos minutos: muchos 500 son momentáneos.
- Si persiste, el problema es del sitio: no se arregla borrando caché ni cambiando de navegador.
Cómo solucionar el error 500
- Lee el log de errores de la aplicación y del servidor web: ahí está la línea exacta.
- Deshaz el último cambio (despliegue, plugin, .htaccess) y comprueba si el error desaparece.
- Comprueba el espacio en disco (df -h) y la memoria (free -m).
- En WordPress, activa WP_DEBUG_LOG y desactiva los plugins renombrando la carpeta wp-content/plugins.
- Nunca muestres el traceback en producción: regístralo y enseña una página de error genérica.
Configuración y comandos
Dónde mirar
sudo tail -n 100 /var/log/nginx/error.log
sudo tail -n 100 /var/log/apache2/error.log
sudo journalctl -u mi-app --since "10 min ago"
docker logs --tail 100 mi-contenedor
df -h && free -mWordPress: registrar errores en wp-content/debug.log
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);Ejemplo de respuesta
HTTP/1.1 500 Internal Server Error
Content-Type: text/html
<h1>Internal Server Error</h1>Herramientas para comprobarlo
Preguntas frecuentes
¿Qué significa error 500?
Que el servidor ha tenido un fallo interno al procesar la petición. No es culpa del visitante: el problema está en el código, la configuración o los recursos del servidor.
¿Cómo encuentro la causa de un error 500?
En el log de errores. En nginx está en /var/log/nginx/error.log, en Apache en /var/log/apache2/error.log, y en Docker con docker logs <contenedor>.
¿Un error 500 afecta al posicionamiento?
Si dura poco, no. Si Googlebot encuentra 500 durante días, reduce el rastreo y puede acabar quitando las páginas del índice.
Códigos relacionados
- 502 Bad GatewayEl proxy recibió una respuesta inválida (o ninguna) del servidor de origen.
- 503 Service UnavailableEl servidor no puede atender peticiones temporalmente (mantenimiento o sobrecarga).
- 504 Gateway TimeoutEl proxy no recibió respuesta del servidor de origen a tiempo.
- 501 Not ImplementedEl servidor no soporta la funcionalidad necesaria para atender la petición.