¿Qué es y por qué se produce el error de memoria en Magento 2?
Uno de los problemas más frustrantes para los administradores de tiendas e-commerce es el mensaje Fatal error: Allowed memory size of X bytes exhausted en Magento 2. Este fallo ocurre cuando un script PHP, ya sea durante la compilación, la indexación o la ejecución de un módulo, intenta consumir más recursos de los que tiene asignados en el servidor.
Causas principales del error Allowed Memory Size Exhausted
Las razones más comunes por las que Magento 2 se queda sin memoria RAM incluyen:
- Un límite de memoria PHP demasiado bajo configurado en el archivo
php.ini. - Procesos pesados como la reindexación masiva o la compilación de dependencias (
setup:di:compile). - Extensiones o temas mal optimizados que generan bucles o fugas de memoria.
- Carga excesiva de datos en la memoria caché durante operaciones del backend.
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 asignado a PHP. Sigue estos pasos:
- Accede a tu servidor mediante SSH o utiliza el panel de control de tu hosting (cPanel o Plesk).
- Localiza el archivo
php.inicorrespondiente a la versión de PHP que utiliza tu tienda Magento (por ejemplo,/etc/php/8.1/fpm/php.ini). - Busca la directiva
memory_limity cambia su valor a un mínimo recomendado de 2G o superior:memory_limit = 2G. - Guarda los cambios y reinicia tu servidor web o servicio PHP-FPM ejecutando el comando:
sudo systemctl restart php8.1-fpm.
Método 2: Modificar el límite de memoria directamente desde la línea de comandos (CLI)
Si necesitas ejecutar comandos de Magento como la compilación o la actualización y sigues experimentando cortes, puedes forzar un límite de memoria superior directamente en la terminal sin alterar el archivo global:
- Abre la terminal SSH y navega hasta la raíz de tu instalación de Magento.
- Ejecuta el comando de consola pasando el parámetro
-d memory_limit. Por ejemplo, para compilar el código:php -d memory_limit=4G bin/magento setup:di:compile. - Verifica que el proceso finalice correctamente sin arrojar excepciones de memoria agotada.
Método 3: Optimizar la configuración en archivos .htaccess (Servidores Apache)
Si tu servidor utiliza Apache y no tienes acceso root para modificar el php.ini principal, puedes intentar sobrescribir el valor mediante el archivo .htaccess ubicado en la raíz de Magento:
- Abre el archivo
.htaccesscon un editor de texto. - Busca la sección correspondiente a los límites de PHP y añade la siguiente línea:
php_value memory_limit 2G. - Guarda el archivo y limpia la caché de tu tienda para aplicar los cambios.