Cómo resolver el error 'Fatal error: Allowed memory size exhausted' en PrestaShop (DirectAdmin)
¿Qué significa el error "Allowed memory size exhausted" en PrestaShop?
Si estás leyendo esto, probablemente te has encontrado con una pantalla en blanco o un mensaje de error similar a este:
[WARNING] Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /home/usuario/public_html/classes/module/Module.php on line 548
No te preocupes, es uno de los errores más comunes en PrestaShop y tiene solución. Te lo explicamos de forma sencilla: PrestaShop necesita un límite de memoria PHP para funcionar. Cuando tu tienda crece, añades módulos, productos o tu catálogo es muy grande, el límite actual puede quedarse corto. Es como si tu tienda necesitara una mesa más grande para trabajar, pero le estás dando una muy pequeña.
Este error indica que el servidor ha agotado la memoria asignada al script PHP que intenta ejecutar PrestaShop. La buena noticia es que puedes aumentar ese límite y, en la mayoría de los casos, el problema se soluciona en pocos minutos.
Antes de empezar: ¿Por qué ocurre el error memoria PrestaShop?
Existen varias razones por las que tu tienda puede quedarse sin memoria:
- Demasiados módulos activos que consumen recursos.
- Catálogo muy grande con miles de productos, imágenes o combinaciones.
- Módulos mal optimizados que hacen consultas pesadas a la base de datos.
- Tema de PrestaShop que carga muchos scripts o estilos.
- Configuración del servidor con un límite de memoria bajo por defecto.
- Procesos de indexación o generación de miniaturas que requieren más recursos.
Independientemente de la causa, el primer paso siempre es aumentar la memoria PHP disponible. A continuación te mostramos todas las formas de hacerlo en un entorno DirectAdmin, desde las más fáciles hasta las más avanzadas.
¿Cómo aumentar la memoria PHP en DirectAdmin para PrestaShop?
DirectAdmin es un panel de control muy popular en hosting compartido y VPS. La buena noticia es que tiene varias herramientas para gestionar la configuración de PHP. Vamos a verlas todas.
1. Usa el selector de versiones de PHP (MultiPHP)
DirectAdmin incluye una herramienta llamada MultiPHP Manager o PHP Selector. Con ella puedes cambiar la versión de PHP y también modificar valores como memory_limit sin necesidad de tocar archivos. Sigue estos pasos:
- Accede a tu panel de DirectAdmin (normalmente en
https://tudominio.com:2222). - Busca la sección "Gestión de Cuentas" o "Configuración de PHP".
- Dentro, localiza "MultiPHP Manager" o "Selector de PHP".
- Verás una lista de dominios y una tabla con valores configurables.
- Busca la opción
memory_limity cámbiala a un valor mayor, por ejemplo:256M,512Mo incluso1Gsi tu hosting lo permite. - Guarda los cambios y verifica si el error desaparece.
[TIP] Si no ves la opción
memory_limitdirectamente, busca un botón que diga "Mostrar todas las opciones" o "Configuración avanzada". También puede estar en una pestaña llamada "Opciones de PHP".
Este método es el más recomendado porque no requiere conocimientos técnicos y es reversible en cualquier momento.
2. Modifica el archivo .htaccess
Si no tienes acceso a MultiPHP o prefieres un método manual, puedes usar el archivo .htaccess de tu tienda. Este archivo se encuentra en la raíz de tu instalación de PrestaShop (normalmente en /public_html).
Para modificarlo:
- Accede a tu hosting mediante Administrador de archivos de DirectAdmin o mediante FTP (FileZilla, por ejemplo).
- Localiza el archivo
.htaccessen la carpeta raíz de PrestaShop. - Descarga una copia de seguridad antes de editarlo (por si acaso).
- Abre el archivo con un editor de texto (Block de notas, Sublime Text, etc.).
- Añade estas líneas al final del archivo:
<IfModule mod_php7.c>
php_value memory_limit 512M
php_value max_execution_time 300
php_value max_input_time 300
</IfModule>
[INFO] Si usas PHP 8.x, cambia
mod_php7.cpormod_php.co simplemente usaphp_value memory_limit 512Msin el bloqueIfModule.
- Guarda el archivo y súbelo de nuevo al servidor (si usas FTP) o guarda los cambios en el Administrador de archivos.
- Prueba de nuevo tu tienda.
Este método funciona en la mayoría de los servidores Apache. Si tu hosting usa LiteSpeed o Nginx, puede que necesites un enfoque diferente, pero el .htaccess sigue siendo compatible en muchos casos.
3. Crea o modifica el archivo php.ini
Otra opción es crear un archivo php.ini en la carpeta raíz de PrestaShop. Este archivo permite configurar valores específicos para ese directorio y sus subdirectorios.
- Ve a la raíz de tu PrestaShop (donde están
config,classes,admin...). - Comprueba si ya existe un archivo llamado
php.ini. Si no existe, crea uno nuevo. - Abre el archivo y añade lo siguiente:
memory_limit = 512M
max_execution_time = 300
max_input_time = 300
post_max_size = 64M
upload_max_filesize = 64M
- Guarda el archivo y súbelo al servidor.
- Recarga tu tienda y comprueba si el error ha desaparecido.
[WARNING] Algunos servidores compartidos no permiten usar
php.inipersonalizado. Si ves un error 500 después de subirlo, elimínalo o consulta con tu proveedor de hosting.
4. Cambia la memoria desde el panel de administración de PrestaShop
PrestaShop también tiene una forma de ajustar algunos parámetros de PHP desde su propio panel de administración, aunque no es tan directo como los métodos anteriores.
- Accede a tu panel de administración de PrestaShop (normalmente en
/admin123o similar). - Ve a Parámetros avanzados → Rendimiento.
- Busca la sección "Límites de memoria" o "Configuración de memoria".
- Cambia el valor a
512Mo superior. - Guarda los cambios.
Este método es útil si el error te permite acceder al panel de administración. Si el error ocurre en toda la tienda y no puedes entrar, tendrás que usar los métodos anteriores.
5. Contacta con tu proveedor de hosting (si todo falla)
Si has probado todos los métodos anteriores y el error persiste, es posible que tu plan de hosting tenga un límite de memoria PHP muy restrictivo que no se puede sobrescribir desde el panel. En ese caso:
- Contacta con el soporte técnico de tu hosting.
- Explícales que necesitas aumentar el
memory_limitpara PrestaShop. - Pregunta si tu plan permite valores como
512Mo1G. - Si no es posible, considera cambiar a un plan superior o a un VPS.
[TIP] La mayoría de los hostings que ofrecen DirectAdmin permiten al menos
256Mo512M. Si tu plan es muy básico, puede que necesites actualizarlo.
¿Qué valor de memoria debo usar para PrestaShop?
No hay una respuesta única, pero te damos una guía orientativa:
- Tienda pequeña (menos de 100 productos, 5-10 módulos):
128Msuele ser suficiente. - Tienda mediana (100-1000 productos, 10-20 módulos):
256Mes lo recomendado. - Tienda grande (más de 1000 productos, muchos módulos o tráfico alto):
512Mo1G.
[INFO] Si usas módulos de terceros muy pesados (como herramientas de SEO avanzadas, comparadores de precios o plugins de importación masiva), es probable que necesites más memoria incluso en una tienda pequeña.
¿Cómo verificar si el cambio ha funcionado?
Después de aplicar cualquiera de los métodos anteriores, es importante comprobar que el valor se ha aplicado correctamente. Para ello:
- Crea un archivo llamado
info.phpen la raíz de tu tienda. - Pega este código dentro:
<?php
phpinfo();
?>
- Guarda el archivo y accede a
https://tudominio.com/info.php. - Busca la línea
memory_limity comprueba que aparece el valor que has configurado. - Borra el archivo
info.phpinmediatamente después de la comprobación, ya que es un riesgo de seguridad muy grave dejarlo en el servidor.
¿Qué pasa si el error persiste después de aumentar la memoria?
Si has aumentado la memoria y el error sigue apareciendo, puede que el problema sea más profundo. Aquí tienes algunas soluciones adicionales:
Desactiva módulos innecesarios
Los módulos son la causa más común del error memoria PrestaShop. Desactiva todos los módulos que no uses y prueba de nuevo. Puedes hacerlo desde el panel de administración en Módulos → Gestor de Módulos.
Optimiza la base de datos
Una base de datos muy fragmentada puede consumir mucha memoria. Usa la herramienta de mantenimiento de PrestaShop o un plugin como phpMyAdmin para reparar y optimizar las tablas.
Revisa el tema
Algunos temas de PrestaShop son muy pesados y consumen mucha memoria. Prueba a cambiar temporalmente al tema predeterminado para ver si el error desaparece.
Actualiza PrestaShop y los módulos
Las versiones antiguas de PrestaShop y sus módulos suelen tener problemas de memoria. Asegúrate de tener la última versión estable y todos los módulos actualizados.
Preguntas frecuentes (FAQ) sobre el error memoria PrestaShop
¿Puedo aumentar la memoria PHP sin acceso a DirectAdmin?
Sí, puedes usar el archivo .htaccess o php.ini si tienes acceso por FTP. También puedes contactar con tu proveedor para que lo haga por ti.
¿Qué es exactamente memory_limit?
Es el límite máximo de memoria que un script PHP puede consumir. Si PrestaShop necesita más de lo permitido, el script se detiene y muestra el error.
¿Aumentar la memoria PHP afecta al rendimiento?
No directamente. Si tu servidor tiene suficiente RAM, aumentar el límite no ralentizará tu tienda. De hecho, puede evitar errores que provocan caídas temporales.
¿Y si mi hosting no permite aumentar la memoria?
Entonces deberías considerar cambiar a un hosting que ofrezca más recursos o un plan VPS donde tengas control total. Muchos hostings económicos tienen límites muy bajos que no son adecuados para PrestaShop.
¿El error es peligroso para mi tienda?
No es peligroso, pero sí molesto. Si no se soluciona, puede provocar caídas frecuentes, páginas en blanco y pérdida de ventas. Es importante resolverlo lo antes posible.
Resumen: pasos rápidos para solucionar el error
- Reinicia tu tienda para ver si el error es temporal.
- Aumenta la memoria PHP usando MultiPHP de DirectAdmin (lo más recomendado).
- Si no funciona, edita el
.htaccessconphp_value memory_limit 512M. - Si sigue fallando, crea un
php.iniconmemory_limit = 512M. - Desactiva módulos y optimiza la base de datos.
- Si todo falla, contacta con tu proveedor o considera cambiar de hosting.
[WARNING] Siempre haz una copia de seguridad completa de tu tienda antes de modificar archivos de configuración. Un pequeño error puede dejar tu tienda inaccesible.
Conclusión
El error "Allowed memory size exhausted" es un problema común pero totalmente solucionable. En la mayoría de los casos, aumentar el límite de memoria PHP en DirectAdmin resuelve el problema en cuestión de minutos. Recuerda que PrestaShop es una plataforma potente pero exigente, y necesita recursos suficientes para funcionar correctamente, especialmente si tu tienda crece.
Si has seguido todos los pasos de esta guía y el error persiste, no dudes en contactar con un profesional o con el soporte de tu hosting. A veces, el problema puede estar en un módulo mal codificado o en una configuración del servidor que requiere intervención avanzada.
Esperamos que esta guía te haya sido de ayuda. ¡Tu tienda volverá a funcionar en poco tiempo!
