Solucionar el error 'Fatal error: Allowed memory size' en PrestaShop (DirectAdmin)
¿Qué significa "Fatal error: Allowed memory size"?
Este es uno de los errores más comunes en PrestaShop y, aunque el mensaje asuste, tiene una solución bastante sencilla. Básicamente, lo que te está diciendo el sistema es que tu tienda necesita más memoria de la que tiene asignada para ejecutar una tarea concreta.
Piensa en la memoria como el espacio de trabajo de tu tienda. Si estás cocinando y solo tienes una mesa muy pequeña para preparar una receta enorme, al final no te cabe todo. Pues con PrestaShop pasa exactamente igual: si el código necesita más espacio del que tiene, se detiene y te muestra ese error.
El mensaje completo suele aparecer así:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /home/usuario/public_html/classes/Product.php on line 1234
No te asustes con los números. Lo importante es que entiendas que hay una solución clara y que puedes aplicarla tú mismo siguiendo esta guía.
¿Por qué aparece este error en mi PrestaShop?
Existen varias razones por las que tu tienda puede quedarse sin memoria. Las más habituales son:
- Módulos mal optimizados: algunos módulos consumen muchísima memoria, especialmente los de importación masiva, generación de informes o los que hacen llamadas externas.
- Imágenes demasiado pesadas: si subes imágenes de varios megabytes sin optimizar, PrestaShop necesita memoria para procesarlas.
- Temas mal configurados: algunos temas cargan demasiados scripts o hacen peticiones innecesarias.
- PHP con límite bajo: el valor por defecto en muchos servidores es de 128M (134217728 bytes, que es lo que sale en el mensaje). Para una tienda moderna, esto suele ser insuficiente.
- Plugins de caché o SEO mal configurados: a veces, los plugins de caché consumen más memoria de la que liberan.
Soluciones paso a paso para DirectAdmin
Vamos a ir de la solución más sencilla a la más avanzada. Empieza siempre por la primera y ve comprobando si el error desaparece.
Paso 1: Aumentar el memory_limit desde el Panel de Control (DirectAdmin)
Esta es la solución más rápida y la que funciona en la mayoría de los casos. DirectAdmin te permite modificar los parámetros de PHP sin necesidad de tocar archivos manualmente.
- Accede a tu panel de DirectAdmin con tus credenciales de administrador.
- Busca la sección "Configuración de PHP" o "PHP Settings". Según la versión de DirectAdmin, puede estar dentro de "Gestión de dominios" o como una opción independiente.
- Selecciona tu dominio (el de tu tienda PrestaShop).
- Busca el parámetro
memory_limit. - Cámbialo a un valor más alto. Te recomendamos empezar por
256My si el error persiste, subirlo a512M. - Guarda los cambios.
[TIP] Si no encuentras la opción exacta, busca en la documentación de tu hosting o contacta con tu proveedor. Algunos paneles lo llaman "PHP Selector" o "MultiPHP Manager".
Después de guardar, reinicia PHP o espera unos minutos y prueba de nuevo tu tienda. En muchos casos, con este simple cambio el error desaparece por completo.
Paso 2: Modificar el archivo php.ini (si tienes acceso)
Si DirectAdmin no te permite cambiar el valor desde el panel o prefieres hacerlo manualmente, puedes editar el archivo php.ini. Este archivo contiene la configuración global de PHP.
- Localiza tu archivo
php.ini. Normalmente está en la raíz de tu cuenta o en una carpeta llamadaetc. Si no lo ves, puedes crearlo en la raíz de tu dominio (donde está la carpetapublic_html). - Abre el archivo con un editor de texto (desde el Administrador de Archivos de DirectAdmin o con un cliente FTP).
- Busca la línea que dice
memory_limit = 128M. - Cámbiala por
memory_limit = 512M. - Guarda el archivo.
[WARNING] Si creas un
php.ininuevo, asegúrate de que el archivo tenga permisos 644. Si no sabes qué es esto, déjalo como está y usa el Administrador de Archivos de DirectAdmin, que lo configura automáticamente.
Paso 3: Añadir la configuración en el archivo .htaccess
Esta es una solución muy práctica porque no necesitas buscar el php.ini. Solo tienes que añadir unas líneas al archivo .htaccess que ya existe en la raíz de tu tienda.
- Accede al Administrador de Archivos de DirectAdmin.
- Ve a la carpeta
public_html(o donde tengas instalado PrestaShop). - Busca el archivo
.htaccess. Si no lo ves, activa la opción de "Mostrar archivos ocultos". - Haz una copia de seguridad de este archivo antes de modificarlo.
- Abre el archivo y añade estas líneas al principio:
<IfModule mod_php7.c>
php_value memory_limit 512M
php_value max_execution_time 300
</IfModule>
Si tu servidor usa PHP 8, cambia mod_php7.c por mod_php8.c. Si no estás seguro, puedes usar esta versión más genérica:
<IfModule mod_php.c>
php_value memory_limit 512M
php_value max_execution_time 300
</IfModule>
- Guarda el archivo y prueba tu tienda.
[INFO] Este método solo funciona si tu hosting usa PHP como módulo de Apache. Si usa PHP-FPM (que es lo más habitual hoy en día), esta solución no tendrá efecto y deberás usar el Paso 1 o el Paso 2.
Paso 4: Crear un archivo php.ini personalizado en la raíz
Si las opciones anteriores no funcionan, puedes crear un archivo php.ini específico para tu tienda. Esto es útil porque no afecta a otros sitios que tengas en el mismo hosting.
- Ve a la raíz de tu dominio (donde está
public_html). - Crea un archivo nuevo llamado
php.ini. - Añade dentro:
memory_limit = 512M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M
- Guarda el archivo y verifica que tenga permisos 644.
[TIP] Si tienes varios dominios, cada uno puede tener su propio
php.ini. Así puedes darle más memoria solo a la tienda que la necesita.
Paso 5: Configurar PrestaShop desde el propio back-office
PrestaShop también tiene su propio archivo de configuración donde puedes forzar el límite de memoria. Esto es útil si no quieres tocar nada del servidor.
- Accede al panel de administración de PrestaShop.
- Ve a Parámetros avanzados > Rendimiento.
- Busca la sección "Límites de memoria" o "Memory limit".
- Introduce el valor
512M(o el que necesites). - Guarda los cambios.
[WARNING] Esta opción no siempre está disponible en todas las versiones de PrestaShop. Si no la encuentras, usa cualquiera de los otros métodos.
Solución al error 500 en PrestaShop
El error de memoria a veces se manifiesta como un error 500 en lugar del mensaje completo. Esto ocurre cuando PHP no puede mostrar el error directamente (por ejemplo, cuando está activado el modo de producción).
Si ves un error 500 y sospechas que es por memoria, sigue estos pasos:
- Activa el modo depuración temporalmente. Ve a
config/defines.inc.phpy busca esta línea:
define('_PS_MODE_DEV_', false);
Cámbiala a:
define('_PS_MODE_DEV_', true);
- Recarga tu tienda. Ahora verás el error completo en pantalla, que te dirá si es realmente un problema de memoria.
- Aplica las soluciones anteriores para aumentar el límite.
- Vuelve a poner
_PS_MODE_DEV_enfalseuna vez resuelto el problema.
[WARNING] No dejes el modo depuración activado en producción. Muestra información sensible de tu servidor a cualquier visitante.
Consejos para prevenir futuros errores de memoria
Una vez que hayas solucionado el error, es buena idea tomar algunas precauciones para que no vuelva a aparecer:
- Optimiza las imágenes: usa herramientas como Photoshop, GIMP o servicios online para reducir el peso de tus imágenes antes de subirlas. Un buen tamaño para la web es entre 100KB y 300KB por imagen.
- Desactiva módulos que no uses: cada módulo activo consume memoria, aunque no lo estés usando en ese momento.
- Actualiza PrestaShop y los módulos: las versiones nuevas suelen estar mejor optimizadas y consumir menos recursos.
- Usa un buen sistema de caché: activa la caché de PrestaShop y considera usar módulos como LiteSpeed Cache o el caché nativo.
- Revisa el log de errores: DirectAdmin te permite ver los logs de error de PHP. Revísalos de vez en cuando para detectar problemas antes de que se conviertan en errores visibles.
Preguntas frecuentes (FAQ)
¿Cuánta memoria necesito para PrestaShop?
Depende del tamaño de tu catálogo y del número de visitas. Para una tienda pequeña (menos de 500 productos), 128M suele ser suficiente. Para una tienda mediana (500-2000 productos), te recomendamos 256M. Para tiendas grandes o con muchos módulos, 512M o más.
¿Puedo poner un valor demasiado alto?
Técnicamente sí, pero no es recomendable. Si pones memory_limit a -1 (que significa ilimitado), podrías saturar el servidor si tienes varios procesos ejecutándose a la vez. Es mejor ir subiendo poco a poco hasta que el error desaparezca.
¿Qué pasa si después de subir a 512M sigue el error?
Puede que el problema no sea solo la memoria. Revisa si hay algún módulo que esté fallando. Desactiva los módulos uno a uno para identificar al culpable, o contacta con el desarrollador del módulo o tu proveedor de hosting.
¿El error afecta a mis clientes?
Sí, cuando aparece el error, la página se bloquea y muestra el mensaje o un error 500. Esto puede hacer que los clientes abandonen la compra, así que es importante solucionarlo cuanto antes.
¿Puedo usar Syspanel en lugar de DirectAdmin?
Si tu hosting usa Syspanel (antes conocido como HestiaCP), el proceso es muy similar. Accede a tu panel en el puerto 2106 (por ejemplo, https://tudominio.com:2106) y busca las opciones de configuración de PHP dentro de tu dominio. El resto de pasos son idénticos.
Conclusión
El error de memoria en PrestaShop es molesto, pero tiene solución en la mayoría de los casos con solo subir el límite de memoria. Como has visto, hay varias formas de hacerlo y no necesitas ser un experto técnico para aplicar ninguna de ellas.
Nuestra recomendación es que empieces por el Paso 1 (DirectAdmin) y si no funciona, pruebes con el Paso 3 (.htaccess). En el 90% de los casos, uno de estos dos resolverá el problema.
Si después de probar todo el error persiste, puede que haya un problema más profundo con algún módulo o tema. En ese caso, no dudes en contactar con tu proveedor de hosting o con un desarrollador especializado en PrestaShop.
Recuerda: siempre haz una copia de seguridad de tus archivos antes de modificarlos. Es mejor perder cinco minutos en una copia que horas tratando de recuperar tu tienda.
[TIP FINAL] Anota en un papel los cambios que hagas. Si algún día el error vuelve a aparecer (por ejemplo, después de una actualización), sabrás exactamente qué valores usaste y podrás aplicarlos de nuevo rápidamente.
