Error interno del servidor 500: qué lo causa y cómo solucionarlo

Un Error interno del servidor 500 es uno de los problemas más comunes que encuentran los propietarios y administradores de sitios web. Indica que algo salió mal en el servidor, pero no ofrece diagnósticos precisos. Este artículo explica qué suele desencadenar un error 500 y cómo puede resolverlo.
Posibles causas de un error 500
Un error 500 puede surgir por muchas razones. Las más frecuentes son:
- Problemas de recursos del lado del servidor
A menudo, el error 500 puede ser causado por problemas técnicos en el servidor, como la falta de recursos (RAM, tiempo de CPU).
- Errores en el código del sitio web
Los scripts o el código del sitio web pueden contener errores que provoquen un fallo. Esto puede deberse a solicitudes incorrectas, errores en archivos de configuración o problemas con la interacción de los componentes del sitio.
- Problemas con el archivo .htaccess
El archivo .htaccess se utiliza para configurar el servidor web y puede contener errores que resultarán en un error 500. Por ejemplo, las reglas de redireccionamiento incorrectas o los parámetros incorrectos pueden causar un fallo.
- Actualizaciones recientes
Los errores pueden ocurrir después de actualizaciones en el sitio web o en las aplicaciones del servidor donde los cambios no se manejaron correctamente.
Cómo solucionar un error 500
- Verificar los registros del servidor web
Para determinar la causa de un error 500, el primer paso es revisar los registros del servidor. Estos registros suelen contener información sobre el fallo, ya sea un error de código, una configuración errónea o un problema a nivel de servidor. Sin embargo, es importante comprender que los registros del servidor web (como los de Nginx o Apache) a menudo solo registran la ocurrencia del error y el código de respuesta, no la causa raíz. Esto es especialmente cierto para Nginx, que generalmente actúa como un proxy y simplemente reenvía el error de la aplicación de backend.
Dependiendo del servidor web que se esté utilizando, los registros pueden ubicarse en los siguientes directorios:
Apache:
-
Ubuntu/Debian:
/var/log/apache2/error.log -
CentOS/AlmaLinux/Rocky Linux:
/var/log/httpd/error.log
Nginx:
/var/log/nginx/error.log
Si su servidor se administra a través de un panel de control como FASTPANEL, ver los registros se vuelve aún más fácil. Para hacerlo:
-
Inicie sesión en el panel de control.
-
Abra la tarjeta del sitio y localice la sección “Registros”.
-
La pestaña “Historial de errores frontend” contiene los errores del servidor web Nginx, mientras que la pestaña “Historial de errores backend” contiene los errores de Apache.
Tenga en cuenta que muchos CMS y frameworks (WordPress, Laravel, Joomla, etc.) mantienen sus propios registros de errores. Estos registros a menudo proporcionan información más precisa sobre la causa de un error 500. Consulte la documentación de su plataforma para encontrar dónde se almacenan estos registros.
Los registros probablemente le darán información detallada sobre lo que salió mal. Si el error 500 se desencadena por una configuración errónea o por problemas de código, puede ver los archivos, o incluso las líneas exactas, que causan el fallo.
- Habilitar el registro de errores del lado PHP
Para obtener diagnósticos más detallados, habilite el registro directamente en PHP, lo cual es especialmente útil cuando el error se origina en el código y no aparece en los registros del servidor web.
Para hacerlo, establezca los siguientes valores en el archivo php.ini:
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
Aquí:
-
display_errors— suprime la salida de errores en el navegador -
log_errors— escribe los errores en un archivo de registro -
error_log— ruta al archivo de registro (PHP debe tener permisos de escritura)
Ubicaciones típicas de php.ini:
-
Debian/Ubuntu:
/etc/php/*/apache2/php.inio/etc/php/*/cli/php.ini -
CentOS/AlmaLinux:
/etc/php.ini
O localícelo mediante:
php -i | grep "php.ini"
En FASTPANEL: abra la tarjeta del sitio → “Configuración de PHP”, busque variables como display_errors, cambie sus valores y haga clic en “Guardar”.
- Verificar el archivo .htaccess
Si el error apareció después de editar .htaccess, revierta el archivo a su estado anterior.
Si no está seguro de lo que cambió exactamente, cambie temporalmente el nombre de .htaccess (por ejemplo, a .htaccess.bak); si el error desaparece, entonces el problema está en este archivo.
En este caso, intente restaurar el archivo .htaccess de una copia de seguridad si está disponible, o utilice el archivo .htaccess predeterminado para su CMS, que puede obtener de aquí.
- Verificar los permisos y la propiedad de los archivos
Los permisos incorrectos pueden desencadenar un error 500. Asegúrese de que la raíz del sitio y todos los subarchivos tengan los derechos y el propietario correctos:
ls -laR /ruta/al/directorio/raiz/del/sitio
Permisos recomendados:
-
Para directorios: 755 — lectura, escritura y ejecución para el propietario; lectura y ejecución para los demás.
-
Para archivos: 644 — lectura y escritura para el propietario; solo lectura para los demás.
Propiedad:
Los archivos y carpetas deben pertenecer al usuario del servidor web (por ejemplo, www-data o apache).
Si es necesario, puede ajustar los permisos y la propiedad utilizando los siguientes comandos:
- Cambie al directorio raíz de su sitio:
cd /ruta/al/directorio/raiz/del/sitio
- Establezca la propiedad y los permisos correctos:
sudo chown -R suusuario:suusuario . && sudo chmod 644 . -R && sudo chmod +X . -R
Reemplace susuario con el usuario y grupo reales que poseen su sitio.
- Deshabilitar plugins y temas.
Para sitios impulsados por CMS como WordPress, un error 500 a menudo surge de conflictos de plugins o temas. Deshabilite todos los plugins y cambie a un tema predeterminado para ver si esto resuelve el problema.
- Asegúrese de que el servidor tenga suficientes recursos libres para sus sitios.
- Compruebe que tiene suficiente espacio libre en disco:
sudo df -h
- Compruebe que el servidor no se ha quedado sin inodes:
sudo df -ih
- Compruebe que el servidor tiene suficiente RAM:
sudo free -mh
- Compruebe la carga actual de la CPU:
sudo ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
- Alternativamente, abra el monitor de procesos con el comando:
sudo top
Si se ha quedado sin espacio en disco o inodes, puede identificar qué archivos y directorios consumen más espacio siguiendo las instrucciones del artículo relevante.
Si la carga de RAM o CPU es excesivamente alta, las causas pueden variar. Comience su investigación bloqueando los bots de los motores de búsqueda, ya que con frecuencia son la fuente de una carga elevada.
- Verifique que la DBMS esté en buen estado.
La mayoría de las veces será MySQL; a continuación se ofrecen varios pasos rápidos para comprobar si sus bases de datos están bien.
- Confirme que el servicio MySQL está en ejecución:
sudo systemctl status mysql
- Compruebe el registro de errores de MySQL:
sudo grep -i error /var/log/mysql/error.log
- Compruebe todas las bases de datos en busca de errores:
mysqlcheck -A -c
Si se encuentran errores, primero asegúrese de tener copias de seguridad de las bases de datos afectadas. Si es necesario, cree un volcado con:
mysqldump -u [usuario] -p [nombre_base_datos] > /ruta/a/archivo/volcado.sql
-
Reemplace
[usuario]con el nombre de usuario de MySQL. -
Reemplace
[nombre_base_datos]con el nombre de la base de datos que desea exportar. -
/ruta/a/volcado.sqles la ruta donde se guardará el archivo de volcado.
Después de eso, ejecute el procedimiento de corrección de errores con mysqlcheck:
mysqlcheck -A --auto-repair -c
- Contacte a su proveedor de alojamiento.
Si no puede identificar el problema, puede valer la pena contactar al soporte de su proveedor de alojamiento. Puede ayudar a identificar problemas en el servidor que no son visibles a nivel de usuario. Puede obtener información sobre cómo elegir el proveedor de alojamiento adecuado en este artículo.
Conclusión
El error 500 no es una sentencia para su sitio web. Con la ayuda de herramientas de diagnóstico básicas, puede averiguar rápidamente la causa y solucionar el problema. Si no confía en sus habilidades, siempre puede recurrir a especialistas. Es importante recordar que un error 500 detectado y solucionado a tiempo le ayudará a evitar problemas más graves en el futuro.