Introducción
Uno de los problemas más frustrantes a los que se enfrentan los administradores de tiendas e-commerce desarrolladas con Magento 2 es el error Allowed memory size exhausted. Este fallo ocurre típicamente al ejecutar comandos de consola como la compilación de código, la actualización de la base de datos o durante la indexación masiva de productos debido a que el script de PHP supera el límite de memoria asignado por defecto en el servidor.
Causas Principales del Error de Límite de Memoria en Magento 2
El núcleo de Magento 2 y sus módulos de terceros realizan operaciones intensivas que consumen una gran cantidad de recursos RAM de PHP. Las causas más comunes incluyen:
- Un valor de
memory_limitdemasiado bajo en el archivophp.inidel servidor. - Ejecución de comandos CLI (Command Line Interface) utilizando una versión o configuración de PHP distinta a la del servidor web.
- Módulos mal optimizados que generan fugas de memoria durante la carga de catálogos extensos.
Método 1: Aumentar el Memory Limit en el archivo php.ini
La solución más directa es incrementar el límite de memoria en la configuración global de PHP. Sigue estos pasos:
- Accede a tu servidor mediante SSH o utiliza el administrador de archivos de tu panel de control (cPanel o Plesk).
- Localiza el archivo
php.iniactivo. Si estás usando la línea de comandos para Magento, recuerda que tu CLI puede usar un archivophp.inidiferente al de Apache/Nginx. - Busca la línea correspondiente a
memory_limity modifica su valor. Se recomienda un mínimo de 2GB o 4GB para Magento 2:memory_limit = 4G. - Guarda los cambios y reinicia tu servidor web o servicio PHP-FPM ejecutando por ejemplo:
sudo systemctl restart php8.1-fpm.
Método 2: Modificar el límite de memoria directamente en la ejecución CLI
Si el error ocurre al ejecutar comandos de la consola de Magento (como bin/magento setup:upgrade), puedes forzar un límite de memoria superior directamente en el comando sin alterar la configuración global:
- Abre tu terminal SSH y conéctate al directorio raíz de tu instalación de Magento 2.
- Ejecuta el comando agregando la directiva
-d memory_limitjusto antes de llamar a php. - Ejemplo práctico para la compilación:
php -d memory_limit=4G bin/magento setup:di:compile. - Este método es sumamente útil en entornos de shared hosting donde no tienes acceso completo para modificar el archivo
php.iniglobal del sistema.