Solucionar error de memoria en PrestaShop (memory limit)
¡Hola! Soy tu técnico de soporte amigable. ¿Estás viendo un molesto aviso de error de memoria en tu tienda PrestaShop? No te preocupes, es uno de los problemas más comunes y, por suerte, tiene solución. En esta guía te voy a explicar paso a paso qué significa el error memoria PrestaShop, por qué ocurre y, lo más importante, cómo solucionarlo aumentando el memory limit PrestaShop para que tu tienda vuelva a volar.
Vamos a desglosarlo de forma sencilla, como si estuviéramos tomando un café. No necesitas ser un experto en programación, solo seguir las instrucciones al pie de la letra.
¿Qué es el error de memoria en PrestaShop?
Imagina que tu tienda PrestaShop es una cocina. Cada vez que un cliente entra, pides a tus empleados (los archivos PHP) que preparen un plato (una página web). Para ello, necesitan ingredientes (memoria RAM). Si tu cocina tiene una despensa pequeña (límite de memoria), cuando lleguen muchos pedidos a la vez, la cocina colapsa y se produce un error.
En términos técnicos, el error memoria PrestaShop aparece cuando el script PHP que ejecuta tu tienda se queda sin la memoria que tiene asignada para funcionar. Verás mensajes como:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)
O simplemente una página en blanco o un error 500. Esto suele ocurrir al instalar módulos, subir productos con muchas imágenes, o cuando el catálogo crece mucho.
Síntomas comunes del error de memoria
- La tienda se vuelve muy lenta o deja de cargar.
- Aparece una pantalla en blanco (White Screen of Death).
- Al intentar acceder al panel de administración, ves el mensaje de error mencionado.
- Los módulos no se instalan o se desactivan solos.
- Las importaciones de productos fallan a mitad del proceso.
¿Por qué ocurre este error?
Las causas principales son:
- Límite de memoria por defecto bajo: Muchos servidores compartidos vienen con un memory limit de 32MB o 64MB, y PrestaShop recomienda al menos 128MB, aunque para tiendas grandes lo ideal son 256MB o más.
- Módulos mal optimizados: Algunos módulos consumen mucha memoria, especialmente los de importación masiva, generación de mapas de sitio o los que hacen muchas consultas a la base de datos.
- Catálogo muy grande: Si tienes miles de productos con muchas combinaciones (tallas, colores), cada página requiere más memoria para procesarlos.
- Tema pesado: Un tema con muchos scripts, estilos y efectos visuales puede consumir memoria extra.
- Versión de PHP desactualizada: Las versiones antiguas de PHP (como 5.6) gestionan peor la memoria que las modernas (7.4, 8.0+).
Ahora que sabes qué es, pasemos a la acción. Vamos a aumentar memoria PrestaShop de forma segura.
Cómo aumentar el memory limit en PrestaShop (Guía paso a paso)
Existen varias formas de hacerlo. Te explico las más efectivas, ordenadas de la más fácil a la más técnica. Recomiendo empezar por la primera.
Método 1: Modificar el archivo config/defines.inc.php (El más común)
Este método funciona en la mayoría de los casos y no requiere acceso al servidor a nivel de sistema, solo al panel de control de tu hosting (cPanel, Syspanel, Plesk, etc.).
Paso 1: Accede a tus archivos
Entra a tu panel de control de hosting (por ejemplo, cPanel o Syspanel - recuerda que el puerto de acceso es el 2106). Busca la opción "Administrador de archivos" (File Manager) o usa un cliente FTP como FileZilla.
Paso 2: Localiza el archivo
Navega hasta la carpeta raíz de tu instalación de PrestaShop. Normalmente es public_html, htdocs o www. Dentro, busca la carpeta config y luego el archivo defines.inc.php.
[WARNING] Antes de modificar cualquier archivo, haz una copia de seguridad. Simplemente descarga el archivo original a tu ordenador por si algo sale mal.
Paso 3: Edita el archivo
Haz clic derecho sobre defines.inc.php y selecciona "Editar" (o "Edit"). Se abrirá un editor de texto. Busca la siguiente línea (normalmente está cerca de la línea 29 o 30):
define('_PS_MEMORY_LIMIT_', '128M');
Si no la encuentras exactamente igual, busca algo como _PS_MEMORY_LIMIT_. Cámbiala por:
define('_PS_MEMORY_LIMIT_', '256M');
O incluso '512M' si tu servidor lo permite y tu tienda es muy grande.
Paso 4: Guarda y comprueba
Guarda los cambios (Ctrl+S o Cmd+S) y cierra el editor. Ahora ve a tu tienda y recarga la página. Si el error desaparecía, ¡felicidades! Ya lo has solucionado.
[TIP] Si no encuentras la línea, puedes añadirla justo antes de la línea que dice
/* Improve PHP configuration to prevent issues */. Pero asegúrate de que no haya otra definición igual más abajo.
Método 2: Modificar el archivo php.ini (Si tienes acceso)
Este método es más potente porque afecta a toda la configuración PHP de tu sitio, no solo a PrestaShop.
Paso 1: Busca o crea el archivo php.ini
En el mismo administrador de archivos, dentro de la carpeta raíz de tu tienda (donde están las carpetas admin, config, modules, etc.), busca un archivo llamado php.ini. Si no existe, puedes crearlo.
Paso 2: Añade la directiva
Abre el archivo php.ini (o el que hayas creado) y pega esta línea al final:
memory_limit = 256M
Puedes cambiarlo a 512M si lo necesitas.
Paso 3: Guarda y verifica
Guarda el archivo. Para comprobar que se ha aplicado, puedes crear un archivo llamado info.php en la misma carpeta con el siguiente contenido:
<?php
phpinfo();
?>
Luego accede a tudominio.com/info.php y busca la línea memory_limit. Debería mostrar el nuevo valor. Borra este archivo después de comprobarlo por seguridad.
[WARNING] Si tu hosting usa Syspanel (puerto 2106), el archivo
php.inipuede estar en una carpeta específica del usuario. Consulta con el soporte de tu hosting si no lo encuentras.
Método 3: Modificar el archivo .htaccess (Alternativa)
Este método es útil si no puedes modificar php.ini o defines.inc.php.
Paso 1: Localiza el archivo .htaccess
En la carpeta raíz de tu PrestaShop, busca el archivo .htaccess. Por defecto, PrestaShop lo genera automáticamente. Si no lo ves, asegúrate de tener activada la opción "Mostrar archivos ocultos" en tu administrador de archivos.
Paso 2: Añade las líneas
Abre el archivo y, al principio (justo después de RewriteEngine On o al inicio del archivo), añade las siguientes líneas:
<IfModule mod_php7.c>
php_value memory_limit 256M
</IfModule>
Si tu servidor usa PHP 8, cambia mod_php7.c por mod_php8.c. También puedes usar un bloque genérico:
<IfModule mod_rewrite.c>
php_value memory_limit 256M
</IfModule>
Paso 3: Guarda y prueba
Guarda el archivo y recarga tu tienda.
[INFO] Este método no siempre funciona en todos los servidores, especialmente si usan PHP-FPM (muy común en Syspanel). Si no funciona, prueba con los métodos 1 o 2.
Método 4: Desde el panel de control de tu hosting (La más fácil)
Muchos paneles de control modernos permiten cambiar el límite de memoria desde la interfaz gráfica, sin tocar archivos.
- En cPanel: Busca la sección "Software" y luego "Select PHP Version". Haz clic en "Switch to PHP Options". Busca la opción
memory_limity cámbiala a256Mo más. - En Syspanel (puerto 2106): Ve a "Ajustes de PHP" o "PHP Settings". Dentro, busca la opción "Memory Limit" y modifícala. Luego guarda los cambios.
- En Plesk: Ve a "Herramientas y configuración" > "Configuración de PHP". Selecciona tu dominio y cambia el valor.
Este método es el más recomendado porque no requiere conocimientos de edición de archivos y los cambios se aplican de inmediato.
Preguntas frecuentes (FAQ) sobre el error de memoria en PrestaShop
Aquí respondo las dudas más comunes que me suelen preguntar.
¿Cuánta memoria debo asignar a mi PrestaShop?
Depende del tamaño de tu tienda:
- Tienda pequeña (menos de 100 productos): 128MB suele bastar.
- Tienda mediana (100-500 productos): 256MB es lo recomendado.
- Tienda grande (más de 500 productos, muchas imágenes, módulos complejos): 512MB o incluso 1GB.
¿Qué pasa si pongo un valor demasiado alto?
No pasa nada malo, pero tu servidor podría rechazar el cambio si no tiene suficiente memoria física. Lo mejor es empezar con 256MB e ir subiendo si el error persiste. Si tu hosting es muy básico, quizá no puedas superar los 128MB.
¿Por qué sigo viendo el error después de aumentar el memory limit?
Puede ser por varias razones:
- El cambio no se ha guardado correctamente. Revisa que el archivo esté bien editado.
- Hay otro archivo que sobrescribe el valor. Por ejemplo, un
php.inien una subcarpeta o un módulo que fuerza un límite menor. - El servidor tiene un límite máximo. Algunos hostings limitan la memoria máxima que puedes asignar. Pregunta a tu proveedor.
- El error no es de memoria. A veces un error 500 puede deberse a otras causas (permisos, errores de sintaxis, etc.). Revisa los logs de error de tu servidor.
¿Puede un módulo causar el error de memoria?
Sí, absolutamente. Algunos módulos mal programados o muy pesados (por ejemplo, los que importan CSV con miles de productos) pueden agotar la memoria aunque tengas un límite alto. Si el error aparece solo al usar un módulo concreto, contacta al desarrollador.
¿Debo actualizar PHP para solucionar el error?
Sí, es muy recomendable. Las versiones modernas de PHP (7.4, 8.0, 8.1) gestionan la memoria de forma mucho más eficiente y además son más seguras. Si tu hosting lo permite, actualiza a la última versión estable compatible con tu PrestaShop.
Conclusión y resumen
El error memoria PrestaShop es un problema común pero fácil de resolver. Lo más importante es identificar que el límite es insuficiente y luego aumentar memoria PrestaShop mediante uno de los métodos que te he explicado.
Resumen rápido:
- Empieza por modificar
config/defines.inc.php(Método 1). - Si no funciona, usa el panel de control (cPanel, Syspanel, etc.) (Método 4).
- Como último recurso, prueba con
php.inio.htaccess(Métodos 2 y 3). - Si el error persiste, revisa módulos y actualiza PHP.
Recuerda que siempre es buena idea tener una copia de seguridad antes de hacer cambios. Y si te sientes perdido, no dudes en contactar al soporte de tu hosting. Ellos pueden ayudarte a ajustar estos valores desde su lado.
Espero que esta guía te haya sido de gran ayuda. ¡Tu tienda PrestaShop volverá a funcionar como nueva! Si tienes más dudas, aquí estoy para ayudarte.
