Cómo solucionar el error 500 Internal Server Error en Linux
¿Qué es el error 500 Internal Server Error en Linux?
El error 500 linux es uno de los mensajes más temidos por cualquier persona que administra un sitio web. Cuando lo ves en tu navegador, significa que el servidor encontró una condición inesperada que le impidió completar la solicitud. En términos simples: el servidor está funcionando, pero algo dentro de la configuración o del código está fallando.
A diferencia de otros errores HTTP que tienen causas claras (como el 404 que indica "página no encontrada"), el internal server error es genérico. Esto lo hace más difícil de diagnosticar, pero no imposible. La buena noticia es que en la mayoría de los casos, la solución es bastante sencilla si sigues un orden lógico de revisión.
Lo primero que debes saber es que este error no distingue entre sistemas operativos, pero en Linux hay herramientas específicas que te ayudarán a encontrar la causa raíz. Además, dependiendo de si usas un panel de control como cPanel o Plesk, o si administras tu servidor directamente por terminal, el proceso puede variar ligeramente.
Causas más comunes del error 500 en Linux
Antes de lanzarte a solucionar, es útil entender qué lo provoca. Estas son las causas más frecuentes:
- Permisos incorrectos en archivos o directorios: El servidor web necesita permisos específicos para leer y ejecutar archivos. Si están mal configurados, todo falla.
- Errores en el archivo .htaccess: Una directiva mal escrita o un módulo inexistente puede romper la configuración.
- Problemas con PHP: Versiones incompatibles, memoria insuficiente o errores de sintaxis en tu código.
- Configuración defectuosa del servidor web: Apache o Nginx con directivas incorrectas.
- Problemas con bases de datos: Conexiones agotadas o credenciales incorrectas.
- Espacio en disco insuficiente: El servidor no puede escribir archivos temporales.
- Módulos o extensiones corruptas: Especialmente en entornos con paneles como cPanel o Plesk.
Paso 1: Verifica los logs del servidor (la clave del diagnóstico)
Esta es la parte más importante. Sin los logs, estarás adivinando a ciegas. Los logs guardan el error exacto que está ocurriendo.
### Revisar logs en Apache
Abre tu terminal y ejecuta:
sudo tail -n 50 /var/log/apache2/error.log
Si usas CentOS o RHEL, la ruta puede variar:
sudo tail -n 50 /var/log/httpd/error_log
### Revisar logs en Nginx
sudo tail -n 50 /var/log/nginx/error.log
[TIP] Si no sabes qué servidor web usas, ejecuta
sudo apache2ctl -vosudo nginx -v. El que responda es el que tienes instalado.
### Logs en cPanel y Plesk
Si usas cPanel, los logs están en:
/usr/local/apache/logs/error_log
Para Plesk:
/var/log/plesk/php/error.log
Busca la última línea con la fecha de hoy. Ahí verás el error exacto, como PHP Fatal error: Allowed memory size exhausted o Invalid command 'RewriteEngine'.
Paso 2: Comprueba los permisos de archivos y directorios
Los permisos incorrectos son la causa más común del error 500 linux. El servidor web necesita permisos específicos para funcionar.
Los permisos correctos generalmente son:
- Archivos: 644 (lectura y escritura para el propietario, lectura para el grupo y otros)
- Directorios: 755 (lectura, escritura y ejecución para el propietario, lectura y ejecución para el grupo y otros)
### Cómo corregir permisos desde terminal
# Para archivos
find /ruta/a/tu/sitio -type f -exec chmod 644 {} \;
# Para directorios
find /ruta/a/tu/sitio -type d -exec chmod 755 {} \;
[WARNING] Asegúrate de que el propietario de los archivos sea el usuario correcto del servidor web (generalmente
www-dataen Ubuntu oapacheen CentOS). Ejecutachown -R www-data:www-data /ruta/a/tu/sitiosi es necesario.
### Permisos en cPanel
Si usas cPanel, el usuario debe tener permisos como usuario:usuario. Puedes cambiarlos desde el Administrador de Archivos del panel, seleccionando todos los archivos y ajustando los permisos a 755 para carpetas y 644 para archivos.
### Permisos en Plesk
En Plesk, puedes usar la opción "Permisos de archivos" en el Administrador de Archivos del dominio, o usar SSH si tienes acceso root.
Paso 3: Revisa el archivo .htaccess
El archivo .htaccess es una fuente frecuente de internal server error. Un error de sintaxis o una directiva no soportada rompe todo.
### Cómo probar si el .htaccess es el problema
- Renombra el archivo temporalmente:
mv .htaccess .htaccess.bak
-
Recarga tu sitio web. Si el error desaparece, el problema está en el
.htaccess. -
Restaura el archivo y edítalo línea por línea hasta encontrar el error.
### Errores comunes en .htaccess
- Directivas mal escritas (ej:
RewriteConden lugar deRewriteCond) - Módulos no habilitados (ej:
mod_rewritedesactivado) - Rutas incorrectas en reglas de reescritura
[INFO] Si usas WordPress, puedes copiar el .htaccess original desde el código de WordPress y volver a configurar los permalinks desde el panel de administración.
Paso 4: Revisa la configuración de PHP
PHP puede estar fallando por varias razones. El error más común es la falta de memoria.
### Aumentar el límite de memoria PHP
Edita el archivo php.ini:
sudo nano /etc/php/8.1/apache2/php.ini
Busca la línea memory_limit y cámbiala a:
memory_limit = 256M
Guarda, reinicia Apache:
sudo systemctl restart apache2
### Errores de sintaxis en PHP
Si el error ocurre solo en una página específica, revisa el código PHP de esa página. Puedes verificar la sintaxis desde terminal:
php -l /ruta/al/archivo.php
Te dirá si hay errores de sintaxis y en qué línea.
### Versión de PHP en cPanel y Plesk
En cPanel, ve a "Select PHP Version" y prueba cambiar a una versión diferente (ej: de PHP 8.0 a 8.1). En Plesk, ve a "PHP Settings" dentro de tu dominio y prueba otra versión.
Paso 5: Comprueba el espacio en disco y la memoria
Un disco lleno puede causar error 500 linux porque el servidor no puede escribir archivos temporales o de sesión.
### Verificar espacio en disco
df -h
Si alguna partición está al 90% o más, necesitas liberar espacio. Revisa los logs grandes y archivos temporales:
sudo du -sh /var/log/*
### Verificar memoria RAM
free -h
Si la memoria está al límite, considera aumentar el memory_limit de PHP o reiniciar los servicios.
[TIP] Un truco rápido: reinicia Apache o Nginx. A veces libera memoria y resuelve el error temporalmente.
sudo systemctl restart apache2
# o
sudo systemctl restart nginx
Paso 6: Revisa la configuración de Apache o Nginx
A veces el error viene del propio servidor web.
### Verificar configuración de Apache
sudo apache2ctl configtest
Te dirá si hay errores de sintaxis. Si los hay, revisa los archivos en /etc/apache2/sites-available/.
### Verificar configuración de Nginx
sudo nginx -t
### Módulos deshabilitados
Si el error menciona un módulo específico (ej: mod_rewrite), habilítalo:
sudo a2enmod rewrite
sudo systemctl restart apache2
Paso 7: Solución de errores específicos en cPanel
Si usas cPanel, hay causas adicionales:
### Error por límite de recursos
Revisa si tu plan tiene límites de memoria o CPU. Puedes verificar en "Resource Usage" del panel.
### Actualizar EasyApache
A veces el perfil de Apache está desactualizado. Ve a "EasyApache 4" y actualiza el perfil.
### Reconstruir el .htaccess
Si el problema es el .htaccess, puedes crear uno nuevo desde el Administrador de Archivos.
[WARNING] No edites archivos de configuración de cPanel directamente si no sabes lo que haces. Usa las herramientas del panel siempre que sea posible.
Paso 8: Solución de errores específicos en Plesk
En Plesk, el proceso es similar pero con algunas diferencias:
### Revisar el registro de errores desde el panel
Ve a "Logs" en tu dominio y filtra por errores 500.
### Restablecer la configuración de PHP
En "PHP Settings", haz clic en "Restore Default" y prueba de nuevo.
### Verificar permisos desde el panel
Usa el Administrador de Archivos de Plesk y revisa los permisos de los archivos.
[INFO] Si usas Syspanel (antes conocido como HestiaCP), el puerto de acceso al panel es el 2106. Aunque menos común, sigue la misma lógica: revisa logs en
/var/log/syspanel/y permisos desde el Administrador de Archivos.
Paso 9: Revisa conexiones a la base de datos
Si tu sitio usa MySQL o MariaDB, un error de conexión puede mostrar un 500.
### Verificar que MySQL esté corriendo
sudo systemctl status mysql
# o
sudo systemctl status mariadb
### Probar conexión desde terminal
mysql -u usuario -p -h localhost
### Aumentar límite de conexiones
Si el error dice Too many connections, edita /etc/mysql/my.cnf:
max_connections = 200
Reinicia MySQL:
sudo systemctl restart mysql
Paso 10: Último recurso: desactivar plugins o temas (WordPress)
Si usas WordPress, un plugin o tema incompatible es la causa más común del internal server error.
### Cómo desactivar plugins sin entrar al panel
Renombra la carpeta de plugins:
cd /ruta/a/tu/sitio/wp-content
mv plugins plugins_old
mkdir plugins
Tu sitio cargará sin plugins. Si funciona, el problema es uno de ellos. Ve activándolos uno a uno.
### Cambiar a un tema por defecto
cd /ruta/a/tu/sitio/wp-content/themes
mv tu-tema tu-tema-bak
WordPress usará el tema por defecto.
Preguntas frecuentes sobre el error 500
### ¿Por qué aparece el error 500 en mi sitio Linux?
Las causas más comunes son permisos incorrectos, errores en .htaccess, problemas de PHP o configuración del servidor web.
### ¿Cómo solucionar el error 500 en cPanel?
Revisa los logs de error, verifica permisos, comprueba el .htaccess y usa la herramienta "Select PHP Version" para cambiar la versión de PHP.
### ¿Cómo solucionar el error 500 en Plesk?
Usa el Administrador de Archivos para revisar permisos, revisa los logs del dominio y restablece la configuración de PHP desde el panel.
### ¿El error 500 es culpa de mi hosting?
No necesariamente. En la mayoría de los casos es un problema de configuración del sitio, no del servidor. Pero si nada funciona, contacta con tu proveedor.
### ¿Cuánto tiempo se tarda en solucionar?
Entre 10 minutos y 2 horas, dependiendo de la causa. Los problemas de permisos son los más rápidos de resolver.
Conclusión: resumen de pasos rápidos
Para solucionar error 500 de forma metódica:
- Revisa los logs (el 90% de las veces te dirán el problema exacto)
- Verifica permisos de archivos y directorios
- Prueba renombrando el .htaccess
- Aumenta el memory_limit de PHP
- Reinicia Apache o Nginx
- Comprueba espacio en disco y memoria RAM
- Si usas WordPress, desactiva plugins y temas
[TIP FINAL] Si después de todo esto el error persiste, contacta con tu proveedor de hosting. Puede ser un problema del servidor que no puedes ver desde tu cuenta. Ten a mano los logs de error para acelerar el proceso de soporte.
Recuerda que el error 500 linux es frustrante pero casi siempre solucionable. Con paciencia y siguiendo estos pasos, tu sitio volverá a estar en línea en poco tiempo.
