Cómo resolver problemas de memoria en PrestaShop (memory limit)
¿Tu tienda PrestaShop te da el temido error de memoria blanca, o te aparece un mensaje como "Fatal error: Allowed memory size of X bytes exhausted"? No te preocupes, es uno de los problemas más comunes en el mundo del ecommerce y, por suerte, tiene solución. En esta guía extensa y paso a paso, vamos a desgranar todo lo que necesitas saber sobre el memory limit prestashop, cómo interpretar el error memoria prestashop y, sobre todo, cómo aumentar memoria php prestashop sin volverte loco en el intento.
Vamos a explicarlo de forma sencilla, como si estuviéramos tomando un café, para que incluso si no eres un experto en hosting, puedas seguir cada instrucción sin miedo. Al final, tendrás un checklist completo para que tu tienda vuele y deje de darte dolores de cabeza.
¿Qué es el "memory limit" y por qué PrestaShop lo necesita?
Piensa en el límite de memoria PHP (el famoso memory_limit) como la cantidad de "espacio de trabajo" que tu servidor le presta a cada script de tu tienda para que pueda hacer su trabajo. PrestaShop es un software muy completo, con módulos, temas, bases de datos y funciones de caché. Cada vez que un cliente visita tu tienda, busca un producto o añade algo al carrito, PHP tiene que ejecutar una serie de tareas.
Si ese "espacio de trabajo" es demasiado pequeño, el proceso se queda a medias. Es como intentar meter todas tus compras del supermercado en una bolsa de plástico diminuta: al final, la bolsa se rompe y todo se cae. Eso es exactamente lo que ocurre con el error de memoria.
Síntomas típicos de que tienes un problema de memoria
Antes de lanzarnos a modificar archivos, es importante que identifiques si realmente estás sufriendo este problema. Los síntomas más comunes son:
- Página en blanco total (el famoso "White Screen of Death").
- Mensajes de error que empiezan con "Fatal error: Allowed memory size of...".
- Imágenes que no cargan o productos que no se muestran correctamente.
- El panel de administración (el back-office) va lentísimo o se cae.
- Errores al intentar exportar o importar productos en masa.
- Problemas al instalar o actualizar módulos y temas.
Si has visto alguno de estos síntomas, sigue leyendo. Vamos a solucionarlo.
El valor recomendado: ¿Cuánta memoria necesito?
PrestaShop es un "comilón" de recursos, sobre todo si tienes muchos módulos activos o un catálogo grande. Aunque el valor por defecto de muchos servidores es de 128M (128 megabytes), lo cierto es que para una operación fluida, te recomendamos encarecidamente empezar con 256M. Si tu tienda es muy grande, con muchos plugins o tráfico alto, lo ideal es ir a 512M.
Aquí tienes una tabla orientativa para que te hagas una idea:
| Tamaño de la tienda | Valor recomendado |
|---|---|
| Tienda pequeña (pocos productos, pocos módulos) | 128M - 256M |
| Tienda mediana (catálogo amplio, varios módulos) | 256M - 512M |
| Tienda grande (catálogo enorme, muchos plugins, tráfico alto) | 512M o más |
[INFO] No te limites a poner "999M" o "-1" (que significa ilimitado). Esto puede causar problemas de rendimiento en el servidor, ya que un solo script podría consumir todos los recursos y ralentizar el resto de sitios web alojados en el mismo servidor. Es mejor ser generoso pero razonable.
Método 1: Aumentar el límite desde el archivo .htaccess (El más fácil)
Este es el primer método que debes probar, ya que es el menos invasivo y funciona en la mayoría de los casos. El archivo .htaccess es un archivo de configuración oculto en la raíz de tu tienda. Para editarlo, necesitas un administrador de archivos (como el de cPanel o Syspanel) o un cliente FTP como FileZilla.
Pasos a seguir:
- Localiza el archivo: Conéctate a tu hosting y busca el archivo
.htaccessen la carpeta raíz donde está instalado PrestaShop. Si no lo ves, asegúrate de activar la opción "mostrar archivos ocultos" en tu gestor de archivos o FTP. - Descarga una copia de seguridad: Antes de tocar nada, descarga una copia de este archivo a tu ordenador. Es una red de seguridad por si algo sale mal.
- Edita el archivo: Abre el archivo
.htaccesscon un editor de texto plano (como Notepad++ o Sublime Text). No uses el Bloc de notas de Windows para esto, ya que puede guardar con codificación incorrecta. - Añade la línea mágica: Al final del archivo, pega la siguiente línea:
Si tu servidor usa PHP 7.2 o superior (lo más probable), también puedes usar:php_value memory_limit 256M
Importante: Si PrestaShop tiene su propio bloque de reglas de reescritura, añade esta línea justo después de<IfModule mod_rewrite.c> php_value memory_limit 256M </IfModule></IfModule>del bloque principal. - Guarda y sube: Guarda el archivo y súbelo a tu servidor (si lo estabas editando localmente).
- Comprueba: Ve a tu tienda y prueba a hacer una acción que antes te daba error.
[TIP] Si estás usando Syspanel (el panel de control con puerto de acceso 2106), el gestor de archivos está en el menú "Archivos" o "Administrador de archivos". La ruta suele ser public_html o domains/tudominio.com/public_html.
Método 2: Modificar el archivo php.ini (El más directo)
Si el método anterior no funciona, es posible que tu servidor no permita cambios a través de .htaccess. En ese caso, el siguiente paso es modificar el archivo php.ini, que es el archivo de configuración principal de PHP.
- Encuentra la ubicación: El archivo
php.inisuele estar en la raíz de tu cuenta de hosting o en una carpeta como/etc/php/7.4/apache2/(la ruta exacta depende de tu servidor). En Syspanel, puedes buscarlo en el gestor de archivos. Si no lo encuentras, crea uno nuevo en la raíz de tu tienda. - Crea o edita el archivo: Si no existe, crea un archivo llamado
php.iniy ábrelo con un editor de texto. - Añade la directiva: Busca la línea que dice
memory_limito añádela al final. Debe verse así:
Puedes cambiar el valormemory_limit = 256M256Mpor512Msi lo necesitas. - Guarda y sube: Guarda el archivo y súbelo a la raíz de tu PrestaShop (donde están las carpetas
admin,config, etc.). - Reinicia PHP (si es posible): En algunos paneles como Syspanel, puedes reiniciar el servicio PHP desde la sección "Servicios" o "Reinicios". Si no puedes, no te preocupes, a menudo los cambios se aplican al instante.
[WARNING] Algunos servidores no permiten modificar php.ini desde el hosting compartido. Si ves un error 500 después de subirlo, elimínalo inmediatamente y usa el método .htaccess o el siguiente.
Método 3: Usar el panel de control de tu hosting (cPanel / Syspanel)
La mayoría de los paneles de control modernos tienen una interfaz gráfica para cambiar la configuración de PHP. Este es el método más seguro y recomendado, ya que el panel se encarga de aplicar los cambios correctamente.
Si usas cPanel:
- Entra en cPanel y busca la sección "Software" o "Gestión de PHP" (a veces se llama "MultiPHP INI Editor" o "Select PHP Version").
- Selecciona tu dominio.
- Busca la opción
memory_limity cambia el valor a256Mo512M. - Haz clic en "Guardar" o "Aplicar".
Si usas Syspanel (el panel con puerto 2106):
- Accede a Syspanel desde tu navegador usando la URL
https://tu-servidor:2106(o la IP que te hayan dado). - Ve a la sección "Web" o "Dominios" y selecciona tu sitio.
- Busca la opción "Configuración PHP" o "PHP Settings".
- Ajusta el campo
memory_limital valor deseado y guarda los cambios.
[INFO] Syspanel es una herramienta de gestión de hosting muy potente. Si tienes dudas sobre cómo usar su interfaz, suele haber una sección de ayuda integrada o puedes contactar con tu proveedor de hosting para que te guíen.
Método 4: Definir el límite en el archivo config/settings.inc.php
Este es un método más avanzado, pero muy efectivo en algunos casos. PrestaShop tiene un archivo de configuración que carga al inicio. Aunque no es la práctica más recomendada (porque se puede sobrescribir en actualizaciones), funciona como un "parche" rápido.
- Navega a tu carpeta de configuración: Ve a la carpeta
configen la raíz de tu PrestaShop. - Abre
settings.inc.php: Ábrelo con un editor de texto. - Añade la línea: Justo al principio, después de la apertura de
<?php, añade esta línea:ini_set('memory_limit', '256M'); - Guarda y sube: Guarda el archivo y súbelo al servidor.
[WARNING] Este archivo es crítico para tu tienda. Si lo editas mal, puedes romperla. Asegúrate de tener una copia de seguridad antes de tocarlo. Además, ten en cuenta que una actualización de PrestaShop podría sobrescribir este cambio.
Método 5: Revisar y optimizar los módulos y el tema
A veces, el problema no es que el límite sea bajo, sino que algún módulo o tu tema están consumiendo demasiada memoria. Antes de aumentar el límite al máximo, vale la pena hacer una "limpieza".
- Desactiva módulos que no uses: Ve a tu back-office, en "Módulos" y "Módulos y servicios". Desactiva todo lo que no estés utilizando activamente. A veces, módulos mal programados son los que provocan el error.
- Cambia al tema por defecto (temporalmente): Para probar, cambia tu tema al tema clásico de PrestaShop. Si el error desaparece, el problema está en tu tema. Contacta con el desarrollador del tema.
- Actualiza todo: Asegúrate de tener la última versión de PrestaShop, tus módulos y tu tema. Los desarrolladores suelen corregir bugs de rendimiento en las actualizaciones.
[TIP] Si desactivas un módulo y el error desaparece, ya sabes cuál es el culpable. Puedes intentar actualizarlo o contactar con su soporte.
Preguntas Frecuentes (FAQ) sobre el error de memoria
Aquí tienes las respuestas a las dudas más habituales que nos encontramos en soporte:
¿Qué significa exactamente "Allowed memory size of X bytes exhausted"?
Significa que el script PHP ha intentado usar más memoria de la que el servidor le permite. El número que aparece (por ejemplo, 134217728 bytes) es el equivalente a 128M. Solo tienes que aumentarlo con los métodos anteriores.
¿Puedo poner el memory_limit a -1 para que sea ilimitado?
Técnicamente sí, pero no es recomendable. Podría hacer que un solo proceso consuma toda la memoria del servidor y afecte a otros sitios web. Es mejor usar un valor alto pero finito, como 512M o 1G.
He aumentado la memoria y sigo teniendo el error, ¿qué hago?
Si has llegado a 512M y el error persiste, el problema no es el límite. Es probable que tengas un módulo o tema con un error de programación (un bucle infinito, por ejemplo). Te recomiendo revisar los logs de errores de PrestaShop (en var/logs o log/ dependiendo de la versión) para ver el mensaje exacto del error. También puedes activar el modo debug de PrestaShop para obtener más información.
¿Aumentar la memoria me hará pagar más en mi hosting?
No. El memory_limit es un límite por script, no un consumo fijo. Solo pagarás más si tu servidor tiene recursos muy limitados y necesitas contratar un plan superior. Aumentar este límite no tiene coste adicional en la mayoría de los casos.
¿El error de memoria afecta al SEO de mi tienda?
¡Sí! Un error de memoria provoca que las páginas no carguen, lo que aumenta la tasa de rebote y empeora la experiencia de usuario. Google penaliza las páginas lentas o que dan error. Por lo tanto, resolver este problema es crucial para tu SEO y para que tus clientes no se vayan a la competencia.
¿Cuál es la mejor manera de prevenir este error?
La prevención es la clave. Mantén tu tienda actualizada, usa módulos de calidad, realiza copias de seguridad periódicas y supervisa el rendimiento de tu sitio. También es importante tener un buen servicio de hosting que ofrezca suficientes recursos.
Conclusión final
Resolver el memory limit prestashop es un proceso de "prueba y error", pero con estos 5 métodos tendrás una probabilidad altísima de éxito. Empieza siempre por el .htaccess, luego pasa al panel de control y, si todo falla, revisa la optimización de tu tienda.
Recuerda que un error memoria prestashop no es el fin del mundo. Es una señal de que tu tienda está creciendo y necesita más recursos. Siguiendo estos pasos, podrás aumentar memoria php prestashop de forma segura y volver a tener una tienda rápida, estable y lista para vender.
Esperamos que esta guía te haya sido de gran ayuda. Si has seguido todos los pasos y aún tienes problemas, no dudes en contactar con tu proveedor de hosting, ya que pueden tener restricciones específicas en su configuración. ¡Mucha suerte con tu tienda!
