Introducción
Uno de los problemas más frustrantes a los que se enfrentan los administradores y desarrolladores de tiendas en línea es el error Allowed memory size of X bytes exhausted en Magento 2. Este fallo ocurre normalmente al ejecutar comandos de la consola como setup:upgrade o setup:di:compile, así como al generar informes pesados o procesar imágenes en el panel de administración, debido a que el script de PHP supera el límite de memoria asignado por el servidor.
Causas Principales del Error de Memoria en Magento 2
Magento 2 es una plataforma robusta que requiere una gran cantidad de recursos del sistema. Las razones principales por las que aparece este error incluyen:
- Un límite de memoria asignado en el archivo
php.inidemasiado bajo para las exigencias de Magento. - Ejecución de comandos de compilación o indexación masiva mediante la interfaz de línea de comandos (CLI) sin los parámetros adecuados.
- Módulos de terceros mal optimizados que provocan fugas de memoria durante la carga de clases o la inyección de dependencias.
Método 1: Aumentar el límite de memoria en el archivo php.ini
La forma más directa de solucionar este inconveniente es incrementar la cantidad de memoria RAM que PHP puede utilizar. Sigue estos pasos:
- Identifica qué versión de PHP estás utilizando y localiza tu archivo
php.ini(suele encontrarse en rutas como/etc/php/8.1/fpm/php.inio/etc/php/8.1/cli/php.ini). - Abre el archivo utilizando un editor de texto con privilegios de superusuario mediante la terminal:
sudo nano /etc/php/8.1/cli/php.ini. - Busca la directiva
memory_limity modifica su valor. Se recomienda establecer al menos 2GB o un valor ilimitado para tareas de compilación:memory_limit = 2G. - Guarda los cambios y sal del editor. Si usas PHP-FPM y Nginx o Apache, recuerda reiniciar el servicio correspondiente:
sudo systemctl restart php8.1-fpm.
Método 2: Asignar más memoria directamente al ejecutar comandos CLI
Si el error aparece exclusivamente al utilizar la consola, puedes sobrescribir temporalmente el límite de memoria de PHP directamente desde el comando sin necesidad de modificar el archivo global del sistema.
- Accede a la raíz de tu instalación de Magento 2 mediante SSH.
- Ejecuta el comando problemático añadiendo la bandera
-d memory_limit=-1al inicio. Por ejemplo, para la compilación de inyección de dependencias, utiliza:php -d memory_limit=-1 bin/magento setup:di:compile. - Espera a que el proceso finalice correctamente sin restricciones de memoria.
Método 3: Optimizar y limpiar la caché de Magento 2
A veces, archivos temporales corruptos o una acumulación excesiva de datos en la caché provocan que los procesos consuman más recursos de los necesarios.
- Limpia la caché actual ejecutando:
php -d memory_limit=-1 bin/magento cache:clean. - Elimina los directorios de caché y generación manualmente si el problema persiste:
rm -rf var/cache/* var/generation/* var/di/*. - Vuelve a compilar tu aplicación para asegurarte de que todo funcione de manera fluida.