Magento 2 Error de memoria agotada permitida al compilar código

28

Tengo un error cuando agrego el módulo.

Vuelva a ejecutar el comando de compilación Magento

así que ejecuto el siguiente comando pero también visualizo el error que se muestra a continuación cuando ejecuto el comando desde la raíz,

php magento setup: di: compile

Compilation was started.
%message% 0/7 [>---------------------------]   0% 1 sec 37.0 MiB%message% 0/7 [>
---------------------------]   0% 1 sec 37.0 MiBProxies code generation... 0/7 [
>---------------------------]   0% 1 sec 37.0 MiB
Proxies code generation... 1/7 [====>-----------------------]  14% 47 secs 43.5
MiB
Repositories code generation... 1/7 [====>-----------------------]  14% 47 secs
43.5 MiB
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate
 24 bytes) in D:\xampp\htdocs\linsenwelt\vendor\zendframework\zend-code\src\Scan
ner\FileScanner.php on line 36

Como arreglar ?

Khushbu Mehta
fuente
Recibo el mismo error en el servidor en vivo
SIBHI S

Respuestas:

72

Una solución rápida para el límite de memoria en el comando Magento 2 es agregar directamente el límite de memoria dentro del comando.

Para el comando de compilación,

php -dmemory_limit=5G bin/magento setup:di:compile

Para el despliegue

php -dmemory_limit=5G bin/magento setup:static-content:deploy

Puede cambiar según 5G al máximo si el problema no se resuelve.

Rakesh Jesadiya
fuente
1
gracias @rakesh me ahorra tiempo muchas gracias una vez más
Nagaraju K
1
Tenga cuidado, aumentar el límite de memoria puede ser solo una solución temporal.
Macas
8

Parece que su cli tiene solo 128 MB de memoria asignada. Aumente el valor a al menos 256 MB o 512 MB si puede.

Marius
fuente
Intenté un tamaño de 512 MB para mi archivo php.ini pero todavía no funciona ... ¿cómo puedo solucionarlo?
Khushbu Mehta
Si todavía obtienes Allowed memory size of 134217728 bytes, no has aumentado el límite de memoria para cli.
Marius
¿En qué archivo configuro el límite de memoria?
Khushbu Mehta
8

usa esta forma 'sucia'

php -dmemory_limit=-1 bin/magento setup:di:compile
Ansyori
fuente
6
php -dmemory_limit=6G bin/magento setup:di:compile
Sheshgiri Anvekar
fuente
5

Si está usando PHP> = 5.3.0 y usó Magento 2.1.xy superior, luego de ejecutar composer install, se crearán dos archivos en su directorio raíz y en su directorio de pub llamado.user.ini

Edite esos archivos para anular su configuración de PHP.ini, en este caso es el memory_limit

; Set PHP memory limit to 768M which already enough for compilation tasks
memory_limit = 768M
max_execution_time = 18000

Si está utilizando Apache, deberá cuidar los archivos dentro del directorio raíz solamente, no el /pubuno y viceversa si está usando engineX (nginx)

Espero eso ayude.

Toan Nguyen
fuente
3

Necesita aumentar la memoria asignada a php. Para aumentar la memoria, ejecute el comando php --ini. Descubrimiento cargado php.ini. Debería ser como

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/05-opcache.ini,

Vaya a php.ini actual cargado (/etc/php5/cli/php.ini) y encuentre el parámetro memory_limit. Aumente el valor del parámetro memory_limit a 256M o 512M.

Amit Sachan
fuente
3

Esta situación puede ser difícil de depurar ya que si solo

php -r "echo ini_get('memory_limit').PHP_EOL;"

muestra el límite de memoria para el PHP en su ruta, lo que podría estar bien. Pero el script magento (bin / magento) usa el preámbulo

#!/usr/bin/env php

¡así que no necesariamente está usando PHP desde tu camino! Una forma de rastrear el php.iniarchivo que se está utilizando es escribir un pequeño script como este:

#!/usr/bin/env php
<?php
phpinfo();

llámelo getinfo( getinfo.php¡ no !), hágalo ejecutable, luego ejecútelo así:

./getinfo  | grep php.ini

Esto le mostrará el archivo ini que necesita cambiar. En ese archivo, cambie el valor de configuración memory_limitcomo se sugiere en otras publicaciones, a un valor superior a 128M. Luego guarde el archivo y verifique su trabajo:

./getinfo  | grep memory_limit
Scott C Wilson
fuente
2

Me encontré con un problema similar, el límite de memoria se incrementó a 2 Gb dentro del archivo php ini, el archivo phpinfo () mostró que estaba configurado en 2 Gb. Parece que Magento estableció el límite de memoria manualmente en alguna parte. Aumenté el límite de memoria dentro del archivo bin / magento. En primera línea pongo esto:

ini_set('memory_limit', '656M');

lo que lo hizo funcionar.

JohnyFree
fuente
2

Tengo solución para mi pregunta. Para el error de memoria agotada, tenemos que agregar un límite de memoria para compilar código.

php -dmemory_limit=4G bin/magento setup:di:compile

Espero que ayude a alguien en el futuro.

Khushbu Mehta
fuente
0

Use la siguiente línea php/bin magento -d memory_limit=5G s:d:c para su código de compilación. Esto se debe al límite de memoria permitido para el php. Pero después de permitir el límite de memoria en el comando, esto eliminará el error y su compilación y otros comandos se ejecutarán sin ningún error. Simplemente agregue esto
-d memory_limit=5G en cada comando como lo vio en el ejemplo anterior. Vota si encuentras útil mi respuesta.

Rakesh Kumar
fuente
0

La compilación usando "-d memory_limit = 5G" no es una decisión acertada. Es una solución temporal que puede verse afectada durante el proceso de Cambio de modo, es decir, de Desarrollador a Producción. Esta vez el sistema compila el código sin esta lógica "-d memory_limit = 5G" que arroja el error.

Es una mejor opción para corregir este error en esta etapa. Para solucionar esto, abra php.ini y aumente el límite de memoria en 1024M y ejecute el comando de compilación php bin / magento setup: di: compile

Verifique esto: https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors

Esta vez debería funcionar

zuber bandi
fuente
0

Si se enfrenta a este problema en Cli, coloque en la bandeja este comando

php -dmemory_limit = Configuración 8G bin / magento: actualización

hirokapuriya
fuente
0

para M2 agregue el límite de memoria a través de ssh con el siguiente comando.

para el comando de compilación: php -dmemory_limit=5G bin/magento setup:di:compile para el comando de despliegue: php -dmemory_limit=5G bin/magento setup:static-content:deploy

puede aumentar el valor 5G si el problema no se resuelve.

Anas Mansuri
fuente
0

67

Una solución rápida para el límite de memoria en el comando Magento 2 es agregar directamente el límite de memoria dentro del comando.

Para el comando de compilación,

php -dmemory_limit = 5G bin / magento setup: di: compile For Deployment

php -dmemory_limit = 5G bin / magento setup: static-content: deploy Puede cambiar según 5G a max si el problema no se resuelve.

es realmente trabajo :)

Alauddin Forhad
fuente