Cómo solucionar el error 500 Internal Server Error en Apache
¿Te ha pasado que intentas entrar a tu web y te encuentras con un mensaje en blanco que dice "500 Internal Server Error"? No te preocupes, es uno de los errores más comunes en Apache y, aunque suene técnico, la mayoría de las veces tiene una solución sencilla.
En esta guía extensa y paso a paso, vamos a desglosar cómo solucionar el error 500 Apache desde cero. No necesitas ser un experto en Linux; solo sigue cada paso con calma. Incluiremos trucos de Apache troubleshooting y te enseñaremos a leer los log Apache para que puedas identificar el problema tú mismo.
¿Qué es el error 500 Internal Server Error?
El error 500 servidor es un código de estado HTTP que indica que algo salió mal en el servidor web, pero sin dar detalles específicos al navegador. Es como si tu coche se encendiera la luz de "check engine": sabes que hay un problema, pero necesitas abrir el capó para ver qué es.
Las causas más frecuentes son:
- Errores en el archivo .htaccess (sintaxis incorrecta, directivas no permitidas).
- Problemas de permisos en archivos o carpetas.
- Errores en PHP (por ejemplo, un script que consume demasiada memoria o tiene un fallo fatal).
- Configuración incorrecta de Apache (VirtualHost, módulos, etc.).
- Límites de recursos alcanzados (memoria, ejecución máxima).
Primeros pasos: antes de tocar nada
Antes de meternos en comandos, haz esto rápido:
- Refresca la página (F5). A veces es un error temporal.
- Prueba desde otro navegador o dispositivo para descartar caché local.
- Comprueba si el error afecta a toda la web o solo a una página específica. Si es solo una página, el problema suele estar en un plugin, tema o script concreto.
[TIP] Anota la URL exacta donde aparece el error. Te ayudará a localizar el problema en los logs.
Paso 1: Habilitar la visualización de errores de PHP (si aplica)
Si tu web usa PHP, muchas veces el error 500 Apache es en realidad un error de PHP que no se muestra por seguridad. Vamos a forzar que se vea.
Si tienes acceso al archivo .htaccess
Agrega estas líneas al principio:
php_flag display_errors on
php_value error_reporting E_ALL
Guarda y recarga la página. Ahora, en lugar del 500, verás un mensaje de error de PHP con detalles como "Fatal error: Allowed memory size exhausted". Eso te dará una pista directa.
Si usas Syspanel (antes conocido como HestiaCP)
Accede a tu panel de control en https://tu-dominio.com:2106. Ve a Web > Editar en el dominio afectado y en la sección de PHP marca la opción "Mostrar errores". Guarda los cambios.
[WARNING] No dejes la visualización de errores activada en producción. Desactívala cuando termines de depurar.
Paso 2: Revisar el archivo .htaccess (la causa más común)
El archivo .htaccess es un archivo de configuración oculto que Apache lee en cada petición. Un error de sintaxis o una directiva no soportada puede provocar un 500.
Cómo localizarlo
Conéctate por FTP o mediante el administrador de archivos de tu hosting. El archivo .htaccess suele estar en la raíz de tu web (public_html o similar). Si no lo ves, asegúrate de mostrar archivos ocultos.
Solución rápida: renombrarlo
Renómbralo a .htaccess_backup y recarga la web. Si el error desaparece, el problema está ahí.
Cómo repararlo
Si el error desapareció al renombrarlo, el problema está en las reglas. Las causas típicas son:
- Directivas no permitidas (por ejemplo,
RewriteEngine Onsin el módulo mod_rewrite activado). - Sintaxis incorrecta (falta una llave, una línea mal escrita).
- Redirecciones en bucle (reglas mal diseñadas).
Abre el archivo original en un editor de texto y busca líneas sospechosas. Una buena práctica es ir comentando líneas con # al inicio y probando hasta encontrar la culpable.
[INFO] Si usas WordPress, el .htaccess suele tener reglas de reescritura. A veces al cambiar de hosting o instalar un plugin de caché se corrompe. Puedes regenerarlo desde Ajustes > Enlaces permanentes > Guardar cambios.
Paso 3: Leer los logs de Apache (la clave del troubleshooting)
Los log Apache son el diario de a bordo del servidor. Ahí se registran todos los errores con detalles. Es la herramienta más poderosa para cualquier Apache troubleshooting.
Dónde encontrarlos
Depende de tu sistema operativo y configuración:
- Ubuntu/Debian:
/var/log/apache2/error.log - CentOS/RHEL:
/var/log/httpd/error_log - Syspanel (HestiaCP):
/var/log/apache2/domains/tudominio.com.error.logo desde el panel en Logs > Error log.
Cómo leerlos en tiempo real
Conéctate por SSH y ejecuta:
tail -f /var/log/apache2/error.log
Esto mostrará las últimas líneas y se actualizará en vivo. Ahora, desde otro navegador, recarga la página que da error. Verás aparecer una línea como esta:
[Mon Mar 10 12:00:00.123456 2025] [php:error] [pid 12345] [client 192.168.1.1:54321] PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /var/www/html/wp-content/plugins/mi-plugin/script.php on line 45
Esa línea te dice exactamente:
- Tipo de error: PHP fatal.
- Causa: memoria agotada.
- Archivo y línea:
script.phplínea 45. - IP del cliente: la tuya.
Con esta información, sabes que debes aumentar el límite de memoria de PHP o desactivar ese plugin.
Errores comunes en logs
Permission denied: problemas de permisos en archivos.Request exceeded the limit of 10 internal redirects: bucle en .htaccess.Invalid command 'xxxx': directiva no soportada en .htaccess.PHP Fatal error: Uncaught Error: fallo en el código PHP.
[TIP] Si no ves nada en los logs, asegúrate de que el nivel de log no esté en "emerg" o "alert". En Apache, el nivel por defecto suele ser "warn", que ya captura errores.
Paso 4: Verificar permisos de archivos y carpetas
Los permisos incorrectos son otra causa frecuente del error 500 servidor. Apache necesita poder leer los archivos y ejecutar los scripts.
Permisos recomendados
- Archivos: 644 (lectura/escritura para el dueño, solo lectura para grupo y otros).
- Carpetas: 755 (lectura/ejecución para todos, escritura solo para el dueño).
- Archivos especiales (como wp-config.php): 600 o 640.
Cómo cambiarlos desde SSH
# Para archivos en toda la web
find /ruta/a/tu/web -type f -exec chmod 644 {} \;
# Para carpetas
find /ruta/a/tu/web -type d -exec chmod 755 {} \;
Dueño correcto
Asegúrate de que el dueño de los archivos sea el usuario del hosting (en Syspanel suele ser admin o el nombre del usuario). Si usas FTP, el usuario debe coincidir.
chown -R usuario:usuario /ruta/a/tu/web
[WARNING] No pongas permisos 777 (todo el mundo escribe). Es un riesgo de seguridad grave.
Paso 5: Aumentar límites de PHP (memoria, ejecución, subida)
Si los logs muestran errores de memoria agotada o tiempo de ejecución excedido, necesitas aumentar estos límites.
Desde .htaccess (si tu hosting lo permite)
php_value memory_limit 256M
php_value max_execution_time 300
php_value upload_max_filesize 64M
php_value post_max_size 64M
Desde Syspanel
Ve a Web > Editar en tu dominio > PHP > Configuración avanzada. Ahí puedes modificar memory_limit, max_execution_time, etc. Guarda y recarga.
Desde el archivo php.ini
Si tienes acceso, busca php.ini (normalmente en /etc/php/versión/apache2/php.ini) y modifica los valores. Luego reinicia Apache:
sudo systemctl restart apache2
Paso 6: Verificar la configuración de Apache (VirtualHost)
Si los pasos anteriores no funcionan, el problema puede estar en la configuración del propio Apache.
Comprobar sintaxis
Ejecuta:
sudo apachectl configtest
Te dirá si hay errores de sintaxis y en qué archivo. Por ejemplo:
Syntax error on line 12 of /etc/apache2/sites-enabled/miweb.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
Errores típicos
- Directivas obsoletas: En Apache 2.4,
Order allow,denyse reemplaza porRequire all granted. - Módulos desactivados: Si usas
RewriteRule, asegúrate de quemod_rewriteesté activo. - Errores de sintaxis en rutas: Rutas de DocumentRoot incorrectas.
Cómo corregir
Edita el archivo del VirtualHost (por ejemplo, en /etc/apache2/sites-available/miweb.conf) y corrige el error. Luego recarga Apache:
sudo systemctl reload apache2
Paso 7: Desactivar módulos o plugins conflictivos
Si el error apareció después de instalar algo nuevo (plugin, tema, módulo de Apache), desactívalo temporalmente.
En WordPress
Renombra la carpeta wp-content/plugins a wp-content/plugins_backup. Si el error desaparece, reactiva los plugins de uno en uno hasta encontrar el culpable.
En Apache
Desactiva módulos sospechosos con:
sudo a2dismod nombre_modulo
sudo systemctl reload apache2
Paso 8: Revisar el espacio en disco y la memoria del servidor
Un servidor sin espacio libre o con poca memoria puede generar errores 500 aleatorios.
Comprobar espacio
df -h
Si alguna partición está al 100%, libera espacio (logs viejos, archivos temporales, etc.).
Comprobar memoria
free -h
Si la memoria está casi llena, considera aumentar los límites de PHP o migrar a un plan superior.
FAQ: Preguntas frecuentes sobre el error 500 Apache
¿Por qué veo un error 500 solo en algunas páginas?
Suele deberse a un plugin, tema o script específico que falla. Revisa los logs de Apache para ver el archivo y línea exactos.
¿El error 500 puede deberse a un ataque?
Sí, a veces un ataque DDoS o un intento de explotación puede saturar el servidor. Revisa los logs de acceso (access.log) en busca de peticiones anómalas.
¿Cómo reinicio Apache desde Syspanel?
En Syspanel, ve a Servidor > Servicios y busca "Apache". Haz clic en Reiniciar. También puedes usar SSH: sudo systemctl restart apache2.
¿Qué hago si no tengo acceso SSH?
Si solo tienes FTP, céntrate en el .htaccess y los permisos. También puedes usar el administrador de archivos del panel de control (cPanel, Syspanel, etc.) para editar archivos.
¿El error 500 afecta al SEO?
Sí, si es persistente, Google puede penalizar tu web. Resuélvelo lo antes posible. Además, si usas Syspanel, puedes activar un modo de mantenimiento temporal.
Resumen y checklist final
Para solucionar el error 500 Apache:
- ✅ Refresca la página y prueba en otro dispositivo.
- ✅ Habilita la visualización de errores de PHP.
- ✅ Renombra .htaccess para descartarlo.
- ✅ Lee los log Apache con
tail -f. - ✅ Verifica permisos (644 archivos, 755 carpetas).
- ✅ Aumenta límites de PHP.
- ✅ Comprueba la sintaxis de Apache con
apachectl configtest. - ✅ Desactiva plugins/módulos nuevos.
- ✅ Revisa espacio en disco y memoria.
Si después de todo esto el error persiste, contacta con tu proveedor de hosting. Ellos pueden revisar la configuración del servidor a nivel raíz.
[INFO] Recuerda que en Syspanel, el acceso al panel es por el puerto 2106 (
https://tudominio.com:2106). Ahí puedes gestionar dominios, logs y configuraciones de PHP fácilmente.
Espero que esta guía te haya sido útil. El error 500 servidor puede ser frustrante, pero con paciencia y los pasos correctos, siempre tiene solución. ¡Buena suerte!
