Cómo resolver el error '500 Internal Server Error' en PrestaShop (DirectAdmin)
¡Vaya! Ver el temido error 500 Internal Server Error en tu tienda PrestaShop es de esas cosas que ponen los pelos de punta a cualquier propietario de un negocio online. De repente, tu tienda deja de funcionar y tus clientes no pueden comprar. Pero no te preocupes, respira hondo.
Este error es un "cajón de sastre" en el mundo del hosting. Significa que algo ha fallado en el servidor, pero no te dice exactamente el qué. La buena noticia es que, en la mayoría de los casos, tiene solución y puedes arreglarlo tú mismo sin necesidad de ser un experto en informática.
En esta guía extensa y detallada, vamos a desgranar paso a paso cómo diagnosticar y solucionar el error 500 PrestaShop cuando tu sitio está alojado en un panel de control DirectAdmin. Vamos a ello.
¿Por qué aparece el error 500 en PrestaShop?
Antes de ponernos manos a la obra, es útil entender qué lo causa. El error interno PrestaShop (o error 500) puede deberse a múltiples factores, pero los más comunes son:
- Permisos de archivos incorrectos: Los archivos de tu tienda tienen que tener permisos específicos de lectura y escritura. Si se cambian por error, el servidor no puede acceder a ellos.
- Archivo
.htaccesscorrupto o con errores: Este archivo es como el "director de orquesta" de tu servidor web. Una línea mal escrita puede provocar un fallo total. - Un módulo o plugin defectuoso: A veces, una actualización de un módulo de pago, envío o cualquier otro puede generar conflictos que rompen la tienda.
- Límite de memoria PHP agotado (memory_limit): Si tu tienda necesita más memoria de la que el servidor le permite, se cae.
- Errores de sintaxis en un archivo PHP: Un archivo editado incorrectamente puede causar un error fatal.
- Problemas con la caché: Una caché corrupta o demasiado grande puede generar conflictos.
Preparación: Activa el modo depuración (Debug Mode)
Para no trabajar a ciegas, el primer paso es hacer que PrestaShop nos muestre el error real. Por defecto, este está oculto para no dar pistas a los atacantes, pero nosotros necesitamos verlo.
### ¿Cómo activar el modo depuración?
Tienes dos opciones: a través del archivo de configuración principal o usando el panel de administración (si es que todavía puedes acceder).
Opción A: A través del archivo config/defines.inc.php
- Accede a tu panel de DirectAdmin.
- Entra en el Administrador de Archivos (File Manager).
- Navega hasta la carpeta donde está instalada tu tienda (normalmente
domains/tudominio.com/public_html). - Busca la carpeta
configy dentro de ella, el archivodefines.inc.php. - Haz clic derecho sobre el archivo y selecciona Editar.
- Busca la línea que dice
define('_PS_MODE_DEV_', false);. - Cambia
falseportruey guarda los cambios.
[INFO] Si no encuentras la línea exacta, puede que se llame _PS_MODE_DEV_. Asegúrate de que el valor sea true.
Opción B: A través del Panel de Administración
Si aún puedes entrar en tu back-office de PrestaShop, ve a:
- Preferencias -> Rendimiento.
- En la parte superior, busca la opción "Modo de depuración" o "Debug mode".
- Actívalo y guarda.
Una vez activado, recarga tu tienda. Ahora, en lugar del error genérico, verás un mensaje de error específico, como "Fatal error: Allowed memory size...". Ese mensaje es la clave para saber qué está fallando. Anótalo o haz una captura de pantalla.
Soluciones Paso a Paso para el Error 500 en DirectAdmin
Ahora que tienes más información (o incluso si no la tienes), vamos a aplicar las soluciones más efectivas en orden de probabilidad.
1. Regenerar el archivo .htaccess
Este es el culpable número uno. Un archivo .htaccess dañado es la causa más frecuente del error 500 PrestaShop DirectAdmin.
Pasos para regenerarlo:
- Ve al Administrador de Archivos de DirectAdmin.
- Localiza el archivo
.htaccessen la raíz de tu tienda (enpublic_html). - IMPORTANTE: No lo borres aún. Primero, descárgalo a tu ordenador como copia de seguridad. Haz clic derecho y selecciona "Descargar".
- Ahora sí, elimina el archivo
.htaccessdel servidor. - Ve a tu back-office de PrestaShop. Si no puedes acceder, no pasa nada; la regeneración también se puede hacer por FTP, pero es más complicado.
- En el back-office, ve a Parámetros Avanzados -> Rendimiento.
- Haz clic en el botón "Guardar" o "Actualizar" en la parte inferior. Esto forzará a PrestaShop a generar un nuevo archivo
.htaccesslimpio. - Vuelve a tu tienda y comprueba si el error ha desaparecido.
[WARNING] Si no puedes acceder al back-office, borrar el .htaccess temporalmente puede hacer que tu tienda funcione, pero perderás las URLs amigables. No lo dejes así mucho tiempo; intenta regenerarlo pronto.
2. Revisar los permisos de archivos y carpetas
Los permisos incorrectos son otra causa muy común. Piensa en ellos como un sistema de "cerraduras" para cada archivo y carpeta.
Los permisos correctos son:
- Carpetas (Directorios):
755(rwxr-xr-x) - Archivos:
644(rw-r--r--)
Cómo cambiarlos en DirectAdmin:
- En el Administrador de Archivos, selecciona todos los archivos y carpetas de la raíz de tu tienda.
- En la barra superior, verás un botón que dice "Cambiar permisos" o un icono de candado.
- Introduce el valor correcto (755 para carpetas y 644 para archivos) y aplica los cambios.
- OJO: No apliques 644 a las carpetas ni 755 a los archivos. Debes hacerlo por separado o seleccionarlos de forma individual.
[TIP] DirectAdmin te permite filtrar por tipo de archivo. Selecciona solo las carpetas para cambiar sus permisos a 755 y luego solo los archivos para ponerlos a 644.
3. Aumentar el límite de memoria PHP (memory_limit)
Si el error que ves menciona "Allowed memory size of X bytes exhausted", este es tu problema. PrestaShop es una aplicación que consume mucha memoria, y a veces el límite por defecto no es suficiente.
Cómo aumentarlo desde DirectAdmin:
- Ve a la sección "Configuración de PHP" o "PHP Settings". En DirectAdmin, suele estar en el apartado "Cuenta" o "Administrador de dominios".
- Busca la opción
memory_limit. - Cambia el valor a
256Mo incluso512M. - Guarda los cambios y reinicia el servicio de PHP si se te pide.
¿No encuentras esa opción? No te preocupes. Puedes hacerlo creando un archivo .user.ini en la raíz de tu tienda.
- Crea un archivo nuevo en el Administrador de Archivos llamado
.user.ini. - Edítalo y pega el siguiente contenido:
memory_limit = 512M
max_execution_time = 120
max_input_time = 120
- Guarda el archivo. Este método es muy efectivo y respetado por la mayoría de servidores.
4. Deshabilitar módulos conflictivos
A veces, un módulo recién instalado o actualizado es el que está causando el error interno PrestaShop. El problema es que cuando el error 500 ocurre, normalmente no puedes acceder al back-office.
La solución es renombrar la carpeta de módulos.
- Ve al Administrador de Archivos.
- Localiza la carpeta
modulesen la raíz de tu tienda. - Cámbiale el nombre a algo como
modules_old. - Crea una carpeta nueva llamada
modules. - Ahora, al recargar tu tienda, PrestaShop no encontrará ningún módulo y el error debería desaparecer.
- Entra a tu back-office (ya deberías poder). Ve a Módulos y Servicios.
- Activa los módulos de uno en uno. En el momento en que actives uno y la tienda se caiga, habrás encontrado al culpable.
- Desinstala o elimina ese módulo conflictivo.
- Una vez arreglado, puedes borrar la carpeta
modules_old.
[WARNING] Este método desactiva TODOS los módulos, incluidos los de pago. Tu tienda funcionará, pero no podrá cobrar hasta que reactives los módulos de pago.
5. Forzar la regeneración de la caché de Smarty
La caché de plantillas (Smarty) puede estar corrupta. Forzar su regeneración es un paso rápido y a menudo efectivo.
- En el Administrador de Archivos, navega a la carpeta
var/cache(en PrestaShop 1.7) ocache(en PrestaShop 1.6). - Dentro, verás subcarpetas como
dev,prody archivos. - Elimina todos los archivos que hay dentro de las subcarpetas
devyprod. No borres las carpetas en sí, solo su contenido. - Haz lo mismo con la carpeta
cache/smarty/compilesi existe. Elimina el contenido, no la carpeta.
[TIP] Si no puedes borrar los archivos, cámbiales el nombre a archivo.php.old. Esto también fuerza a PrestaShop a crear nuevos.
6. Verificar si el problema viene de un tema (Plantilla)
Al igual que los módulos, un tema mal configurado puede romper la tienda.
- Ve a la carpeta
themesen la raíz de tu tienda. - Verás una subcarpeta con el nombre de tu tema (ej.
classic). - Cámbiale el nombre a
tema_old. - Crea una carpeta nueva llamada
classic(o el nombre del tema que tenías). - Recarga tu tienda. Si funciona, el problema es del tema. Puedes intentar reinstalarlo o usar un tema por defecto.
Si nada de esto funciona: Revisa los logs del servidor
Si has llegado hasta aquí y el error persiste, es hora de mirar los registros del servidor. Ellos te dirán exactamente qué está pasando.
### Cómo acceder a los logs en DirectAdmin
- En tu panel de DirectAdmin, busca la sección "Registros" o "Logs".
- Busca el "Error Log" o "Registro de errores" específico para tu dominio.
- Descarga el archivo de log más reciente y ábrelo con un editor de texto.
- Busca las últimas líneas que contengan la fecha y hora en que ocurrió el error 500. Ahí verás el mensaje de error exacto.
Un ejemplo de lo que podrías ver:
[Tue Apr 18 10:00:00 2024] [error] mod_wsgi (pid=1234): Target WSGI script ... PHP Fatal error: Uncaught Error: Call to undefined function curl_init() in /home/user/domains/tudominio.com/public_html/modules/mimodulo/mimodulo.php:42
Este mensaje te indica claramente que el módulo mimodulo está intentando usar una función llamada curl_init() que no está disponible. Con esto, ya sabes exactamente qué módulo es el problemático.
Preguntas Frecuentes (FAQ) sobre el Error 500
¿Puedo perder mis datos de ventas con este error?
No. El error 500 es un error del servidor que impide mostrar la web, pero no borra tu base de datos. Tus productos, pedidos y clientes están a salvo.
¿Cuánto tiempo se tarda en arreglar?
Depende de la causa. Si es el .htaccess, puede ser cuestión de minutos. Si es un módulo conflictivo, puede llevarte un poco más, pero en general, con esta guía, la mayoría de los casos se resuelven en menos de una hora.
¿Debo contactar con mi proveedor de hosting?
Si has probado todos los pasos anteriores y sigues sin solución, sí. Es posible que haya un problema a nivel de servidor que tú no puedas ver. Dales el mensaje de error exacto que has obtenido al activar el modo depuración; les será de gran ayuda.
¿Qué es el error 500 y el error 503? ¿Son lo mismo?
No. El error 500 es un error interno del servidor (un fallo en tu aplicación). El error 503 significa que el servidor está en mantenimiento o sobrecargado. Son diferentes.
¿Cómo puedo prevenir este error en el futuro?
- Actualiza PrestaShop, los módulos y el tema con regularidad.
- Haz copias de seguridad frecuentes de tu tienda y tu base de datos.
- No edites archivos PHP directamente sin saber lo que haces.
- Instala módulos solo de fuentes confiables.
[INFO] Si en algún momento te cambias de panel de control y usas Syspanel (el antiguo HestiaCP), recuerda que para acceder a su panel de administración, la URL es https://tu-servidor:2106. Los pasos para resolver errores son muy similares a los de DirectAdmin, pero la interfaz cambia un poco.
Conclusión
El error 500 PrestaShop DirectAdmin es un problema común, pero no tiene por qué ser una pesadilla. Siguiendo estos pasos de forma metódica, desde lo más simple a lo más complejo, podrás diagnosticar y solucionar el error 500 PrestaShop tú mismo.
Recuerda: activa el modo depuración, revisa el .htaccess, verifica los permisos, aumenta la memoria y aísla el módulo o tema problemático. Con un poco de paciencia, tu tienda volverá a estar operativa en muy poco tiempo. ¡Mucho ánimo!
