Saltar al contenido

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

bash
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 -m

WordPress: registrar errores en wp-content/debug.log

php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Ejemplo de respuesta

http
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

Ver todos los códigos de estado HTTP