Introducción al Error de Límite de Memoria en Magento 2
Uno de los dolores de cabeza más comunes para los desarrolladores y administradores de tiendas e-commerce en Magento 2 ocurre durante la ejecución de comandos de consola, específicamente al compilar el código con bin/magento setup:di:compile. El sistema arroja un fatídico mensaje indicando que se ha superado el límite de memoria permitido (Allowed memory size exhausted), deteniendo por completo el despliegue o la actualización de la plataforma.
Causas Principales del Problema
Este error se produce principalmente debido a las siguientes razones:
- La configuración del archivo
php.inique utiliza la línea de comandos (CLI) tiene un límite de memoria (memory_limit) muy bajo, frecuentemente configurado por defecto en 128M o 256M. - Magento 2 requiere una gran cantidad de recursos para procesar la inyección de dependencias y generar los archivos de fábrica.
- Incompatibilidad entre el límite de memoria del servidor web y el entorno de consola CLI.
Método 1: Modificar el memory_limit directamente en la línea de comandos
La forma más rápida y efectiva de solucionar este inconveniente de manera temporal para la ejecución actual es pasar el parámetro directamente en la terminal al momento de invocar PHP:
- Abre tu terminal SSH y conéctate al servidor de tu tienda.
- Navega hasta la raíz de tu instalación de Magento 2.
- Ejecuta el comando de compilación añadiendo la directiva de memoria:
php -d memory_limit=2G bin/magento setup:di:compile. - Espera a que el proceso finalice con éxito. Si tu servidor lo permite, puedes aumentar el valor a 4G.
Método 2: Actualizar el archivo php.ini específico para CLI
Si no deseas escribir el parámetro en cada comando, debes asegurarte de modificar el archivo php.ini correcto que utiliza la interfaz de comandos (CLI), ya que suele ser independiente del archivo usado por Apache o Nginx.
- Identifica qué archivo php.ini está usando tu CLI ejecutando:
php --ini. - Abre el archivo indicado con un editor de texto (por ejemplo, usando nano o vim):
sudo nano /etc/php/8.1/cli/php.ini(ajusta la ruta según tu versión de PHP). - Busca la línea correspondiente a
memory_limity asígnale un valor recomendado para Magento 2:memory_limit = 2G. - Guarda los cambios, cierra el editor y vuelve a ejecutar tu comando de compilación habitual:
bin/magento setup:di:compile.