Cómo arreglar el error 'Fatal error: Allowed memory size exhausted' en PrestaShop
¿Qué significa el error "Allowed memory size exhausted"?
Si estás leyendo esto, probablemente te has encontrado con una pantalla blanca en tu tienda PrestaShop o con un mensaje de error similar a este:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /public_html/config/config.inc.php on line 87
No te preocupes, es uno de los errores más comunes en PrestaShop y, aunque parezca técnico, tiene una solución bastante sencilla. Vamos a explicarte qué significa y cómo solucionarlo paso a paso, sin necesidad de ser un experto en programación.
El error fatal error memory prestashop indica que tu tienda necesita más memoria PHP de la que tiene asignada actualmente para ejecutar todas las tareas que le pides. Piensa en la memoria como el espacio de trabajo que tiene tu servidor para procesar las peticiones de tus clientes, los módulos, las plantillas y las imágenes. Cuando ese espacio se llena, el sistema se detiene y muestra ese mensaje.
¿Por qué ocurre este error?
Antes de lanzarnos a solucionarlo, es importante entender las causas más comunes:
- Módulos mal optimizados: Algunos módulos consumen mucha memoria, especialmente los de importación de productos, generación de mapas de sitio o los que hacen cálculos complejos.
- Tamaño de las imágenes: Las imágenes muy pesadas requieren mucha memoria para procesarse, sobre todo cuando PrestaShop genera sus múltiples tamaños (miniaturas, zoom, etc.).
- Actualizaciones incompletas: Después de una actualización de PrestaShop o de un módulo, a veces quedan archivos antiguos que consumen recursos.
- Configuración del servidor: Muchos servidores compartidos tienen un límite de memoria PHP bajo por defecto (normalmente 128MB o incluso 64MB).
- Ejecución de tareas pesadas: Importar un catálogo grande, regenerar miniaturas o generar informes extensos son acciones que requieren mucha memoria.
Solución 1: Aumentar el límite de memoria desde el Panel de Control de PrestaShop (La más fácil)
PrestaShop tiene una opción integrada para aumentar la memoria PHP sin tocar archivos. Esta es la primera opción que debes probar porque es la más segura y sencilla.
Pasos a seguir:
- Accede a tu panel de administración de PrestaShop (normalmente en
tudominio.com/admin1234). - Ve al menú Parámetros avanzados en el panel lateral izquierdo.
- Haz clic en Rendimiento.
- Busca la sección Límite de memoria PHP.
- Cambia el valor a 512M o incluso 1024M si tu servidor lo permite.
- Guarda los cambios y comprueba si el error ha desaparecido.
[INFO] Si no encuentras esta opción, puede que tu versión de PrestaShop sea muy antigua o que tu servidor no permita modificarla desde el panel. No te preocupes, la siguiente solución es igual de efectiva.
Solución 2: Modificar el archivo .htaccess (Para usuarios con hosting compartido)
Otra forma de aumentar memoria prestashop es a través del archivo .htaccess que se encuentra en la raíz de tu instalación. Este archivo controla la configuración del servidor Apache.
Pasos a seguir:
- Accede a tu hosting mediante el administrador de archivos del panel de control (cPanel, Plesk, Syspanel, etc.) o mediante FTP con un programa como FileZilla.
- Localiza el archivo
.htaccessen la carpeta raíz de tu PrestaShop (donde están las carpetasadmin,config,img, etc.). - Descarga una copia de seguridad de este archivo por si algo sale mal.
- Abre el archivo con un editor de texto (Bloc 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
</IfModule>
- Guarda los cambios y sube el archivo de nuevo a tu servidor.
- Comprueba si el error ha desaparecido.
[WARNING] Si tu servidor usa PHP 8.x, puede que la línea
mod_php7.cno funcione. En ese caso, prueba conmod_php.co simplemente añade las líneas sin el bloqueIfModule.
Solución 3: Crear o modificar el archivo php.ini (La más completa)
El archivo php.ini es el archivo de configuración principal de PHP. Si tienes acceso para crearlo o modificarlo, esta es una de las soluciones más efectivas para el error memory size prestashop.
Pasos a seguir:
- Accede a la carpeta raíz de tu instalación de PrestaShop.
- Busca si existe un archivo llamado
php.ini. Si no existe, crea uno nuevo con un editor de texto. - Añade o modifica estas líneas:
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 a la raíz de tu PrestaShop.
- Si el error persiste, prueba a mover el archivo a la carpeta
configde PrestaShop, aunque lo normal es que funcione en la raíz.
[TIP] Algunos servidores compartidos no permiten crear
php.inien la raíz. En ese caso, puedes intentar con las otras soluciones de esta guía.
Solución 4: Modificar el archivo config.inc.php (Más avanzado)
Este método es un poco más técnico, pero es muy fiable. Modificaremos el archivo de configuración principal de PrestaShop para forzar el aumento de memoria.
Pasos a seguir:
- Accede a la carpeta
configde tu instalación de PrestaShop. - Busca el archivo
config.inc.php. - Descarga una copia de seguridad antes de tocarlo.
- Abre el archivo con un editor de texto.
- Busca la línea que contiene
ini_set('memory_limit', '128M');o algo similar. - Cámbiala por:
ini_set('memory_limit', '512M');
- Si no encuentras esa línea, añade esta al principio del archivo, justo después de la etiqueta
<?php:
ini_set('memory_limit', '512M');
- Guarda los cambios y sube el archivo de nuevo.
[WARNING] Ten mucho cuidado al editar este archivo. Un error de sintaxis puede dejar tu tienda inaccesible. Por eso es fundamental hacer una copia de seguridad antes.
Solución 5: Aumentar la memoria desde el panel de control del hosting
Muchos paneles de control de hosting modernos te permiten cambiar el php memory limit prestashop directamente desde su interfaz, sin necesidad de editar archivos.
Si usas cPanel:
- Ve a la sección Software o Configuración del idioma.
- Busca Select PHP Version o MultiPHP INI Editor.
- Haz clic en esa opción.
- Ajusta el valor de
memory_limita512Mo superior. - Guarda los cambios.
Si usas Plesk:
- Ve a Configuración de PHP.
- Busca la pestaña Configuración de rendimiento.
- Cambia el valor de
memory_limit. - Aplica los cambios.
Si usas Syspanel (antes HestiaCP):
- Accede a Syspanel a través del puerto 2106 en tu navegador (por ejemplo,
tudominio.com:2106). - Ve a la sección de Web y selecciona tu dominio.
- Busca la opción Configuración de PHP o PHP Settings.
- Cambia el valor de
memory_limit. - Guarda los cambios.
[TIP] Si no sabes qué panel de control usa tu hosting, contacta con el soporte de tu proveedor. Ellos pueden decirte exactamente dónde está esa opción o incluso hacer el cambio por ti.
Solución 6: Optimizar tu tienda para reducir el consumo de memoria
A veces, aumentar la memoria no es suficiente porque el problema es que tu tienda consume demasiada. Aquí tienes algunos consejos para reducir el consumo de memoria y evitar que el error vuelva a aparecer:
Desactiva los módulos que no uses
Entra en Módulos → Módulos y servicios y desactiva todo lo que no necesites. Muchos módulos se cargan en cada petición, aunque no se usen.
Limpia los archivos de caché
En Parámetros avanzados → Rendimiento, activa la opción de Forzar la compilación temporalmente y luego desactívala. Esto regenera los archivos de caché y elimina los antiguos.
Optimiza tus imágenes
- Usa herramientas como Photoshop o compresores online para reducir el peso de tus imágenes.
- En PrestaShop, ve a Parámetros avanzados → Imágenes y regenera las miniaturas después de optimizar las originales.
Actualiza todo
Asegúrate de tener la última versión de PrestaShop y de todos tus módulos. Las actualizaciones suelen incluir mejoras de rendimiento.
Considera un servidor mejor
Si tu tienda tiene mucho tráfico o un catálogo muy grande, quizás es hora de pasar de un hosting compartido a un VPS o servidor dedicado.
Preguntas frecuentes (FAQ)
¿Qué valor de memoria debo poner?
Lo recomendable es empezar con 512M. Si el error persiste, prueba con 768M o 1024M. No es recomendable poner valores demasiado altos si tu servidor no tiene suficiente RAM física, ya que podría ralentizar todo el sistema.
¿Por qué sigo viendo el error después de aumentar la memoria?
Puede que el cambio no se haya aplicado correctamente. Verifica que el archivo se ha subido a la ubicación correcta y que no hay errores de sintaxis. También puede que tengas más de un archivo de configuración y el sistema esté usando otro.
¿Cómo compruebo el límite de memoria actual?
Entra en tu panel de administración de PrestaShop y ve a Parámetros avanzados → Información. Ahí verás el valor de memory_limit entre los datos de configuración de PHP.
¿Es seguro aumentar el límite de memoria?
Sí, siempre que no pongas un valor excesivo. Aumentar de 128M a 512M es perfectamente seguro y común. Eso sí, si todos los sitios en tu servidor hacen lo mismo, podrías saturar el servidor.
¿Qué pasa si ninguna de estas soluciones funciona?
Si has probado todo y el fatal error memory prestashop persiste, contacta con tu proveedor de hosting. Puede que haya una restricción a nivel de servidor que impida aumentar la memoria, o que el problema sea otro (por ejemplo, un módulo corrupto).
Conclusión
El error "Allowed memory size exhausted" en PrestaShop es un problema molesto pero muy solucionable. La mayoría de las veces, basta con aumentar el límite de memoria PHP a 512M mediante cualquiera de los métodos que te hemos explicado.
Recuerda el orden de actuación recomendado:
- Prueba primero desde el panel de administración de PrestaShop (Solución 1).
- Si no funciona, usa el
.htaccess(Solución 2). - Si sigues con el problema, intenta con el
php.ini(Solución 3). - Y si nada funciona, contacta con tu hosting.
Y no olvides que prevenir es mejor que curar: mantén tu tienda actualizada, los módulos optimizados y las imágenes comprimidas. Así evitarás que el error vuelva a aparecer en el futuro.
[INFO] Si te ha resultado útil esta guía, compártela con otros usuarios de PrestaShop que puedan tener el mismo problema. Y si tienes alguna duda, déjala en los comentarios, estaremos encantados de ayudarte.
