Introducción al Error de Límite de Memoria en Magento 2
Uno de los problemas más frustrantes a los que se enfrentan los desarrolladores y administradores de tiendas e-commerce es el error crítico de PHP Fatal error: Allowed memory size exhausted al utilizar Magento 2. Este fallo ocurre normalmente durante la ejecución de comandos de consola (CLI) como la compilación de código, la indexación o la actualización del sistema, y también al cargar páginas pesadas en el frontend o backend.
Causas Principales del Problema
Magento 2 es una plataforma sumamente robusta que requiere una cantidad considerable de recursos del servidor para procesar dependencias, inyección de dependencias y consultas complejas a la base de datos. Las causas más comunes incluyen:
- Un valor de
memory_limitdemasiado bajo en el archivo de configuraciónphp.ini. - Diferencias entre el límite de memoria configurado para el servidor web (Apache/Nginx) y la versión de PHP ejecutada desde la línea de comandos (CLI).
- Módulos de terceros mal optimizados que consumen recursos excesivos al inicializarse.
Método 1: Aumentar el memory_limit en el archivo php.ini
El primer paso para solucionar este inconveniente es incrementar la asignación de memoria para PHP. Debes localizar y editar tanto el archivo php.ini de tu servidor web como el utilizado por la CLI si son independientes.
- Accede a tu servidor mediante SSH.
- Localiza tu archivo
php.iniejecutando el comandophp --inipara identificar su ruta exacta. - Abre el archivo con un editor de texto (por ejemplo,
sudo nano /etc/php/8.1/cli/php.ini). - Busca la directiva
memory_limity asígnale un valor superior, idealmente de 2GB o superior:memory_limit = 2G. - Guarda los cambios y reinicia tu servicio web si es necesario (
sudo systemctl restart apache2ophp-fpm).
Método 2: Modificar el límite de memoria directamente desde la línea de comandos
Si experimentas el error al ejecutar comandos específicos de Magento como bin/magento setup:di:compile, puedes forzar un límite de memoria superior en tiempo de ejecución sin alterar permanentemente el archivo de configuración global.
Ejecuta el siguiente comando en la raíz de tu instalación de Magento:
php -d memory_limit=4G bin/magento setup:upgradeEste comando ejecutará la actualización asignando temporalmente 4 Gigabytes de RAM exclusivamente para ese proceso, evitando el corte abrupto por falta de memoria.
Método 3: Optimizar y verificar configuraciones en .htaccess (Entornos Compartidos)
Si tu tienda Magento 2 se aloja en un servidor de tipo compartido donde no tienes acceso directo al archivo php.ini principal, puedes intentar sobrescribir el parámetro de memoria mediante el archivo .htaccess ubicado en la raíz pública de tu tienda.
Abre el archivo .htaccess y añade la siguiente línea de código al inicio o final del mismo:
php_value memory_limit 2GUna vez aplicado este cambio, limpia la caché de Magento ejecutando bin/magento cache:flush para comprobar que el sistema opera con normalidad y sin errores de memoria.