Cómo resolver el error 'Fatal error: Allowed memory size exhausted' en PrestaShop
¿Has intentado entrar a tu tienda PrestaShop y te has encontrado con un mensaje tan feo como "Fatal error: Allowed memory size exhausted"? No te preocupes, no eres el único. Es uno de los errores más comunes en el mundo de PrestaShop y, afortunadamente, tiene solución.
Este aviso es la forma que tiene tu servidor de decirte que el límite de memoria asignado a PHP se ha agotado. Piensa en ello como una habitación demasiado pequeña para todos los muebles que intentas meter. Cuando la llenas, el proceso se detiene.
En esta guía extensa y pensada para principiantes, vamos a desgranar qué significa este error, por qué ocurre y, lo más importante, cómo solucionarlo paso a paso para que tu tienda vuelva a funcionar sin sobresaltos. Vamos a ello.
¿Qué significa exactamente el error de memoria en PrestaShop?
El mensaje completo suele ser algo así:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /ruta/a/tu/archivo.php on line 45
Vamos a traducirlo. 134217728 bytes equivalen a 128 megabytes (MB). Ese es el límite que tu servidor tiene configurado por defecto. Cuando PrestaShop necesita más memoria para procesar una página, un módulo o una imagen, y supera ese límite, se detiene en seco.
Esto ocurre porque PrestaShop es un software muy completo que a menudo necesita más recursos que otros sistemas. Si tienes muchos módulos activos, un catálogo enorme o plantillas pesadas, el límite de memoria PHP por defecto se queda corto.
Las causas más comunes del error memoria prestashop son:
- Módulos mal optimizados: Un módulo que consume demasiados recursos.
- Imágenes de gran tamaño: Subir fotos en alta resolución sin comprimir.
- Temas complejos: Plantillas con muchas funcionalidades y scripts.
- Versión de PHP desactualizada: Las versiones antiguas son menos eficientes.
- Límite de memoria PHP bajo: La configuración del servidor es demasiado restrictiva.
La buena noticia es que aumentar memoria php es un proceso sencillo si sabes dónde mirar. Vamos a ver las soluciones, de la más fácil a la más avanzada.
Solución 1: Aumentar la memoria a través del archivo config/settings.inc.php
Esta es la solución más rápida y la primera que debes probar, especialmente si no tienes acceso a un panel de control complejo. PrestaShop tiene un archivo de configuración que puedes modificar con un editor de texto.
Paso 1: Accede a tu hosting
Necesitas un Administrador de archivos o un cliente FTP (como FileZilla) para conectarte a tu servidor.
Paso 2: Localiza el archivo
Dentro de la carpeta raíz de tu instalación de PrestaShop (donde están las carpetas admin, config, modules, etc.), busca la carpeta config y dentro de ella, el archivo llamado settings.inc.php.
Paso 3: Edita el archivo
Haz clic derecho sobre el archivo y selecciona "Editar" o "Ver/Editar". Se abrirá un editor de texto. Busca la línea que dice:
define('_PS_MEMORY_LIMIT_', '128M');
Si no la encuentras, es posible que tengas que añadirla justo después de la línea que define _PS_BASE_URL_. Si el valor dice 64M o 128M, cámbialo a un valor mayor.
Paso 4: Aumenta el valor
Reemplaza el número por uno más alto. Para una tienda estándar, te recomiendo empezar con 256M. Si tienes una tienda grande o con muchos módulos, puedes poner 512M.
Quedaría así:
define('_PS_MEMORY_LIMIT_', '512M');
Paso 5: Guarda y sube el archivo
Guarda los cambios en el editor y, si estás usando FTP, sube el archivo modificado a tu servidor, sobrescribiendo el original. Si usas el Administrador de archivos, los cambios se guardan directamente.
[TIP] Antes de cambiar este archivo, haz una copia de seguridad. Si algo sale mal, puedes restaurar la copia fácilmente.
Solución 2: Modificar el archivo php.ini (la forma más directa)
El archivo php.ini es el archivo de configuración principal de PHP. Si tienes acceso a él, esta es la solución más limpia y efectiva para aumentar memoria php.
Paso 1: Encuentra tu php.ini
La ubicación varía según tu proveedor de hosting. Puedes encontrarlo en la raíz de tu cuenta, en una carpeta llamada etc o dentro de public_html. Si no lo ves, usa el Administrador de archivos para buscarlo o contacta con tu soporte.
Paso 2: Busca la línea de memoria
Dentro del archivo, busca la línea que dice:
memory_limit = 128M
Paso 3: Cámbiala
Modifica el valor. Te recomiendo probar primero con 256M y luego ir subiendo si el error persiste.
memory_limit = 512M
Paso 4: Guarda los cambios
Guarda el archivo. En la mayoría de los servidores, los cambios se aplican al instante. Si no es así, puede que necesites reiniciar PHP (a veces se hace desde el panel de control).
[WARNING] No todos los servidores te permiten modificar el php.ini directamente. Si no lo encuentras, no te preocupes, pasa a la siguiente solución.
Solución 3: Crear un archivo .htaccess en la raíz
Si no tienes acceso al php.ini, puedes intentar configurar PHP desde un archivo llamado .htaccess. Este es un archivo de configuración especial para servidores Apache (el más común).
Paso 1: Localiza el .htaccess
En la carpeta raíz de tu PrestaShop, hay un archivo llamado .htaccess. Puede que esté oculto. En tu Administrador de archivos, activa la opción de "Mostrar archivos ocultos".
Paso 2: Añade las líneas
Al final del archivo, añade estas líneas:
<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 genérica que suele funcionar:
php_value memory_limit 512M
php_value max_execution_time 300
Paso 3: Guarda y prueba
Guarda el archivo y vuelve a cargar tu tienda. Si el error persiste, es posible que tu servidor no permita cambiar la configuración desde .htaccess.
Solución 4: Usar el panel de control de tu hosting
Muchos paneles de control modernos, como Syspanel (recuerda que el acceso a este panel se realiza por defecto a través del puerto 2106), cPanel o Plesk, ofrecen una forma gráfica de cambiar la configuración de PHP.
Paso 1: Accede a tu panel
Inicia sesión en tu panel de control de hosting.
Paso 2: Busca "Configuración de PHP" o "MultiPHP INI Editor"
En Syspanel, busca una sección llamada "Configuración de PHP" o "PHP Settings". En cPanel, busca "MultiPHP INI Editor".
Paso 3: Selecciona tu dominio
Elige el dominio de tu tienda PrestaShop.
Paso 4: Cambia el memory_limit
Busca la opción memory_limit y cámbiala de 128M a 512M. Guarda los cambios.
[INFO] En la mayoría de los paneles, los cambios se aplican al momento. Si no es así, puede que necesites esperar unos minutos o reiniciar el servicio PHP desde el mismo panel.
Solución 5: Modificar el archivo .htaccess dentro de la carpeta /admin
A veces, el error ocurre específicamente en el panel de administración. En ese caso, el archivo .htaccess que debes modificar es el que está dentro de la carpeta de tu administración (por ejemplo, /admin1234/.htaccess).
Paso 1: Accede a tu carpeta admin
Encuentra la carpeta de tu administración (normalmente se llama admin o admin1234).
Paso 2: Crea o edita el .htaccess
Si no hay un archivo .htaccess, créalo. Si existe, añade las mismas líneas de la Solución 3, pero esta vez dentro de esta carpeta.
Paso 3: Guarda y prueba
Guarda el archivo y vuelve a intentar acceder a tu panel de administración.
Solución Extra: Optimiza tu tienda (prevención)
Una vez que hayas solucionado el error, es importante que tomes medidas para que no vuelva a ocurrir. Aumentar la memoria es un parche, pero la solución real es optimizar tu tienda.
- Desactiva los módulos que no uses: Cada módulo activo consume memoria.
- Comprime tus imágenes: Usa herramientas como Photoshop o compresores online para reducir el peso de tus imágenes antes de subirlas.
- Actualiza PrestaShop y sus módulos: Las versiones más recientes suelen ser más eficientes en el uso de memoria.
- Limpia el caché: Ve a Preferencias > Rendimiento y limpia la caché de tu tienda.
Preguntas Frecuentes (FAQ)
¿Cuánta memoria debo asignar a PrestaShop?
Para una tienda pequeña, 256 MB suele ser suficiente. Para una tienda mediana o con muchos módulos, 512 MB es lo recomendado. Si tienes una tienda muy grande, es posible que necesites 1 GB, pero eso ya depende de tu servidor.
¿Qué pasa si aumento la memoria a 1 GB?
No debería haber problema, pero ten en cuenta que estás pidiendo más recursos a tu servidor. Si tu plan de hosting es limitado, podría ralentizar otros sitios web en el mismo servidor.
¿Dónde está el archivo php.ini en mi hosting?
La ubicación varía. Busca en la raíz de tu cuenta, en public_html o consulta la documentación de tu proveedor. En Syspanel, puedes encontrar la opción de editar la configuración PHP directamente desde el panel, sin necesidad de buscar el archivo.
¿Puedo modificar el archivo settings.inc.php si no tengo acceso FTP?
Sí, la mayoría de los paneles de control tienen un "Administrador de archivos" que te permite editar archivos directamente desde el navegador.
He probado todas las soluciones y el error persiste. ¿Qué hago?
Si has probado todo y el error continúa, es muy probable que el problema venga de un módulo o tema específico. Te recomiendo desactivar los módulos uno por uno (renombrando la carpeta del módulo en /modules) para identificar al culpable. Si el error desaparece, ese es el problema.
[WARNING] Si no te sientes cómodo editando archivos de configuración, te recomiendo contactar con el soporte técnico de tu hosting o con un desarrollador especializado en PrestaShop. Un error en la configuración podría dejar tu tienda temporalmente inaccesible.
Con estas soluciones, deberías poder resolver el error de memoria en tu PrestaShop y tener tu tienda funcionando de nuevo. Recuerda que la paciencia es clave, y que siempre es mejor prevenir (optimizando) que curar (aumentando memoria sin control). ¡Mucha suerte con tu tienda!
