Cómo solucionar errores comunes en Plesk: 500 Internal Server Error
¡Hola! Soy tu técnico de soporte amigable. Si estás leyendo esto, probablemente te has topado con el temido error 500 Internal Server Error en tu Plesk. No te preocupes, es uno de los problemas más comunes en servidores y, por suerte, casi siempre tiene solución. En esta guía extensa y paso a paso, te voy a explicar qué significa este error, por qué ocurre y, lo más importante, cómo solucionarlo para que tu sitio web vuelva a funcionar en minutos. Vamos a ello.
¿Qué es el error 500 Internal Server Error en Plesk?
El error 500 Internal Server Error es un código de estado HTTP que indica que algo salió mal en el servidor, pero el servidor no puede dar más detalles específicos. Es como si tu coche se encendiera la luz de "check engine": sabes que hay un problema, pero necesitas un escáner para saber exactamente qué es.
En el contexto de Plesk, este error puede aparecer por muchas razones: desde un archivo .htaccess mal configurado, hasta un script PHP que se cuelga, pasando por problemas de permisos o falta de memoria. Lo bueno es que, siguiendo un método de diagnóstico ordenado, puedes identificar la causa raíz.
[INFO] El error 500 es genérico a propósito. El servidor no revela detalles internos por seguridad. Por eso, nosotros tenemos que "investigar" un poco.
Causas más comunes del error 500 en Plesk
Antes de lanzarnos a solucionar, es útil conocer los sospechosos habituales:
- Archivo .htaccess corrupto o con directivas incorrectas. Es la causa más frecuente en sitios WordPress o con reglas de reescritura.
- Errores en scripts PHP (como un plugin o tema de WordPress). Un bucle infinito, una función obsoleta o un límite de memoria excedido.
- Problemas de permisos de archivos o carpetas. El servidor web (Apache o nginx) no tiene permisos para leer o ejecutar un archivo.
- Configuración incorrecta de PHP (versión, límites, extensiones). A veces, cambiar la versión de PHP rompe la compatibilidad.
- Agotamiento de recursos del servidor. Memoria RAM insuficiente, límite de procesos hijo alcanzado, etc.
- Archivos PHP corruptos o incompletos. Una subida de archivos fallida puede dejar un script inservible.
- Problemas con el certificado SSL o redirecciones. Aunque menos común, puede dar un 500 si hay un bucle de redirección.
Diagnóstico paso a paso (la parte más importante)
No te asustes. Vamos a ir desde lo más simple y menos intrusivo hasta lo más técnico. Sigue este orden y probablemente encuentres la solución antes de llegar al final.
Paso 1: Recarga la página y borra la caché del navegador
A veces el error es temporal. Un simple "F5" o "Ctrl + F5" (recarga forzada) puede resolverlo. También borra la caché de tu navegador (Chrome, Firefox, etc.) para descartar una versión en caché del error.
Paso 2: Revisa el archivo .htaccess (el culpable más común)
El archivo .htaccess es un archivo de configuración que Apache lee en cada petición. Un error de sintaxis aquí provoca un 500 al instante.
- Accede a tu Plesk.
- Ve a Sitios web y dominios > selecciona tu dominio.
- Busca la sección Apache y nginx o Administrador de archivos.
- Si usas el Administrador de archivos, navega hasta la raíz de tu sitio (normalmente
httpdocsopublic_html). - Busca el archivo
.htaccess. Atención: el nombre empieza con un punto, puede estar oculto. Si no lo ves, activa "Mostrar archivos ocultos". - Renómbralo temporalmente a
htaccess_old(sin el punto al inicio). Esto lo desactiva. - Vuelve a cargar tu web. Si el error desaparece, ¡bingo! El problema está en ese archivo.
- Solución: Edita el
.htaccessoriginal. Busca líneas sospechosas (reglas de reescritura complejas, directivasSetEnv, etc.). Si usas WordPress, puedes regenerarlo desde el panel de administración (Ajustes > Enlaces permanentes > Guardar cambios). O simplemente copia el contenido de un.htaccessde WordPress limpio:
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
[TIP] Si renombrar el
.htaccesssoluciona el error, pero necesitas reglas personalizadas (como redirecciones 301), ve añadiéndolas de una en una y probando para identificar la línea conflictiva.
Paso 3: Activa el modo debug de PHP (si puedes acceder a Plesk)
Si el paso anterior no funcionó, necesitamos más información. Plesk permite ver errores PHP más detallados.
- En Plesk, ve a Sitios web y dominios > tu dominio.
- Haz clic en Configuración de PHP (o "PHP Settings").
- Busca la opción display_errors y actívala (ponla en "On").
- Busca error_reporting y selecciona un nivel alto, por ejemplo
E_ALLoE_ALL & ~E_DEPRECATED & ~E_STRICT. - ¡Importante! Después de hacer esto, recarga tu web. Ahora, en lugar del error 500 genérico, deberías ver un mensaje de error PHP específico, como "Fatal error: Allowed memory size exhausted" o "Parse error: syntax error".
- Solución: El mensaje te dirá exactamente qué archivo y línea causan el problema. Puedes editar ese archivo (por ejemplo, un plugin de WordPress) o, si es un límite de memoria, aumentarlo desde la misma configuración de PHP (opción
memory_limit).
[WARNING] No olvides desactivar
display_errorsen producción una vez resuelto el error. Dejar los errores visibles es un riesgo de seguridad.
Paso 4: Revisa los logs de error del servidor (la evidencia definitiva)
Si el modo debug no te da una pista clara (o no puedes activarlo), los logs son tu mejor amigo. Plesk guarda registros detallados.
- En Plesk, ve a Sitios web y dominios > tu dominio.
- Busca la sección Registros (o "Logs"). Normalmente hay dos tipos:
- Registro de acceso (access_log): Muestra todas las peticiones.
- Registro de errores (error_log): Aquí está la información que necesitas.
- Abre el error_log del dominio. Busca las últimas líneas (las de la fecha/hora en que ocurrió el error 500).
- Verás mensajes como:
PHP Fatal error: Uncaught Error: Call to undefined function...mod_security: Access denied with code 500...AH01215: (12)Cannot allocate memory: fork: Unable to fork new process
- Solución: Cada mensaje te guía:
- Si es un error de PHP (función no definida, clase no encontrada), el problema es un plugin/tema de WordPress o un script personalizado. Desactívalos o actualízalos.
- Si es un error de mod_security (un firewall de aplicaciones web), puedes desactivarlo temporalmente para tu dominio desde Plesk > Sitios web y dominios > Seguridad > Web Application Firewall (ModSecurity). Ponlo en "Off" y prueba. Si se soluciona, es que una regla de seguridad está bloqueando algo legítimo. Puedes añadir una excepción.
- Si es un error de memoria (
Cannot allocate memory), el servidor está sobrecargado. Habla con tu proveedor de hosting para aumentar los recursos.
Paso 5: Comprueba los permisos de archivos y carpetas
Los permisos incorrectos son otra causa clásica. Los archivos deben tener permisos 644 (lectura/escritura para el propietario, solo lectura para el grupo y otros) y las carpetas 755 (lectura/escritura/ejecución para el propietario, lectura/ejecución para grupo y otros).
- En Plesk, usa el Administrador de archivos.
- Selecciona todos los archivos y carpetas de la raíz de tu sitio.
- Haz clic en Permisos (o "File Permissions").
- Aplica la configuración estándar: 644 para archivos, 755 para directorios. Plesk suele tener un botón para "Aplicar permisos recomendados".
- Si tienes acceso SSH (no siempre disponible en hosting compartido), puedes ejecutar estos comandos desde la raíz de tu sitio:
find . -type f -exec chmod 644 {} \; find . -type d -exec chmod 755 {} \; - Recarga la web.
[INFO] Si tu sitio usa un framework como Laravel, las carpetas
storageybootstrap/cachenecesitan permisos775o777(más permisivos) para que el servidor web pueda escribir en ellas. Plesk a veces te permite configurar esto desde la interfaz.
Paso 6: Cambia la versión de PHP (o restablécelas)
A veces, una actualización de PHP o un cambio de versión puede romper la compatibilidad con tu sitio.
- En Plesk, ve a Sitios web y dominios > tu dominio.
- Haz clic en Configuración de PHP.
- En la parte superior, verás un desplegable para Versión de PHP.
- Si estabas usando PHP 8.2 y tu sitio es antiguo, prueba con PHP 7.4 o 8.0. Si estabas usando una versión antigua, prueba con una más reciente.
- Guarda los cambios y recarga la web.
- Si el error desaparece, el problema era la versión de PHP. Puedes quedarte con esa versión o investigar qué plugin/tema no es compatible con la nueva.
Paso 7: Aumenta los límites de recursos de PHP (memory_limit, max_execution_time)
Si el log muestra errores de "Allowed memory size exhausted" o "Maximum execution time exceeded", necesitas aumentar los límites.
- En Configuración de PHP (mismo lugar que el paso anterior).
- Busca las opciones:
- memory_limit: Auméntalo a
256Mo512M. - max_execution_time: Auméntalo a
300(segundos). - upload_max_filesize: Si subes archivos grandes, auméntalo.
- post_max_size: Debe ser mayor que
upload_max_filesize.
- memory_limit: Auméntalo a
- Guarda y prueba.
Paso 8: Desactiva plugins y temas (si usas WordPress)
Si todo lo anterior falla y tu sitio es WordPress, el problema está en un plugin o tema.
- Accede a tu Administrador de archivos de Plesk.
- Ve a la carpeta
wp-content. - Renombra la carpeta
pluginsaplugins_old. Esto desactiva TODOS los plugins a la vez. - Recarga tu web. Si funciona, el culpable es uno de los plugins.
- Para identificar cuál, renombra la carpeta de nuevo a
plugins, y luego ve renombrando carpetas de plugins individuales (dentro deplugins) de una en una, probando la web cada vez. Cuando el error desaparezca, ese es el plugin malo. Bórralo o actualízalo. - Si el error persiste, renombra la carpeta
themesathemes_old. WordPress usará un tema por defecto (como Twenty Twenty-Three). Si funciona, tu tema está corrupto. Vuelve a subir una copia limpia.
Paso 9: Contacta con tu proveedor de hosting (si nada funciona)
Si has llegado hasta aquí y el error sigue, el problema probablemente está a nivel de servidor (configuración de Apache/nginx, límites del sistema, problemas de red, etc.). Es hora de pedir ayuda profesional.
[TIP] Cuando contactes al soporte, diles qué pasos has seguido (por ejemplo: "renombré el .htaccess, revisé los logs y vi un error de memoria, aumenté el límite, pero sigue igual"). Esto acelera muchísimo la solución.
Preguntas frecuentes (FAQ)
¿El error 500 puede deberse a un ataque DDoS?
Sí, aunque es menos común. Un ataque DDoS puede agotar los recursos del servidor y provocar errores 500. Si notas que tu web va muy lenta y ves muchos accesos desde IPs extrañas en los logs, contacta a tu hosting.
¿Cómo puedo prevenir el error 500 en el futuro?
- Mantén todo actualizado: WordPress, plugins, temas, y la versión de PHP en Plesk.
- Haz copias de seguridad periódicas. Plesk tiene una herramienta de backup muy buena.
- No edites archivos directamente en producción si no estás seguro. Usa un entorno de pruebas (staging) primero.
- Revisa los logs de error semanalmente. Así detectarás problemas antes de que se conviertan en un 500.
¿Qué diferencia hay entre error 500 y error 503?
El 500 es un error interno del servidor (algo falló en la ejecución). El 503 indica que el servidor está sobrecargado o en mantenimiento (no puede atender la petición en ese momento). Las causas y soluciones son diferentes.
¿Plesk tiene alguna herramienta para diagnosticar el error 500?
Sí, además de los logs, Plesk tiene la herramienta "Health Monitoring" o "Server Health" (dependiendo de la versión). Puede mostrarte el uso de CPU, RAM, y procesos. Si ves que la memoria está al 100%, ese es el problema.
Conclusión
El error 500 Internal Server Error en Plesk puede parecer un monstruo, pero como has visto, siguiendo estos pasos de diagnóstico (empezando por lo más simple como el .htaccess, pasando por los logs y terminando con los recursos de PHP) puedes resolverlo en la mayoría de los casos. Recuerda: no te saltes pasos y, sobre todo, lee los logs. Son tu mapa del tesoro.
Espero que esta guía te haya sido de gran ayuda. Si tienes más dudas, ya sabes, aquí estoy para ayudarte. ¡Mucho éxito con tu servidor!
