Magento 2 ha consentito l'errore di memoria esaurita durante la compilazione del codice


28

Ho un errore quando aggiungo il modulo ..

Eseguire nuovamente il comando di compilazione Magento

quindi corro sotto il comando ma visualizzo anche l'errore che sotto quando eseguo il comando da root,

php magento setup: di: compilare

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

Come risolvere ?


Ricevo lo stesso errore nel server live
SIBHI S

Risposte:


72

Una rapida soluzione per il limite di memoria nel comando Magento 2 è l'aggiunta diretta del limite di memoria all'interno del comando.

Per il comando Compilation,

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

Per la distribuzione

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

È possibile modificare come da 5G al massimo se il problema non si risolve.


1
grazie @rakesh mi fa risparmiare tempo grazie ancora una volta
Nagaraju K

1
Attenzione, l'aumento del limite di memoria può essere solo una soluzione temporanea.
Macas

8

Sembra che il tuo cli abbia solo 128 MB di memoria allocata. Aumenta il valore di almeno 256 MB o 512 MB se puoi.


Ho provato la dimensione di 512 MB per il mio file php.ini ma ancora non funziona ... come risolverlo?
Khushbu Mehta,

Se ottieni ancora Allowed memory size of 134217728 bytes, non hai aumentato il limite di memoria per cli.
Marius

In quale file ho impostato il limite di memoria ??
Khushbu Mehta,

8

usa questo modo "sporco"

php -dmemory_limit=-1 bin/magento setup:di:compile


5

Se stai usando PHP> = 5.3.0 e hai usato Magento 2.1.xe versioni successive, dopo aver eseguito composer install, verranno creati due file nella tua directory principale e nella tua directory pub.user.ini

Modifica quei file per sovrascrivere le impostazioni di PHP.ini, in questo caso è il memory_limit

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

Se stai usando Apache, dovrai occuparti solo dei file all'interno della directory root, non di quelli /pube viceversa se stai usando engineX (nginx)

Spero che sia d'aiuto.


3

È necessario aumentare la memoria allocata a php. Per aumentare la memoria, eseguire il comando php --ini. Scopri php.ini caricato. Dovrebbe essere come

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,

Vai al php.ini attualmente caricato (/etc/php5/cli/php.ini) e trova il parametro memory_limit. Aumenta il valore rispetto al parametro memory_limit a 256M o 512M.


3

Questa situazione può essere difficile da eseguire il debug, se non altro

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

mostra il limite di memoria per PHP nel tuo percorso, che potrebbe andare bene. Ma lo script magento (bin / magento) usa il preambolo

#!/usr/bin/env php

quindi non utilizza necessariamente il PHP dal tuo percorso! Un modo per rintracciare il php.inifile che si sta usando è scrivere un piccolo script come questo:

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

chiamalo getinfo(non getinfo.php!), rendilo eseguibile, quindi eseguilo in questo modo:

./getinfo  | grep php.ini

Questo ti mostrerà il file ini che devi cambiare. In quel file, cambia il valore di configurazione memory_limitcome suggerito in altri post, a un valore superiore a 128M. Quindi salva il file e controlla il tuo lavoro:

./getinfo  | grep memory_limit

2

Ho riscontrato un problema simile, il limite di memoria è stato aumentato a 2 GB all'interno del file phi ini, il file phpinfo () ha mostrato che era impostato su 2 GB. Magento sembra impostare manualmente il limite di memoria da qualche parte. Ho aumentato il limite di memoria all'interno del file bin / magento. In prima linea ho messo questo:

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

che l'ha fatto funzionare.


2

Ho una soluzione per la mia domanda. Per errore di memoria esaurita, è necessario aggiungere un limite di memoria per il codice di compilazione.

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

Spero che possa aiutare qualcuno in futuro.


0

Utilizzare la seguente riga dopo php/bin magento -d memory_limit=5G s:d:c per il codice di compilazione. Ciò è dovuto al limite di memoria consentito al php. Ma dopo aver consentito il limite di memoria nel comando, questo rimuoverà l'errore e la compilazione e altri comandi verranno eseguiti senza alcun errore. Basta aggiungere questo
-d memory_limit=5G in ogni comando come mostrato nell'esempio sopra. Valuta se hai trovato utile la mia risposta.


0

La compilazione usando "-d memory_limit = 5G" non è una decisione saggia. È una soluzione temporanea che può essere influenzata durante il processo di cambio modalità, ovvero dallo sviluppatore alla produzione. Questa volta il sistema compila il codice senza questa logica "-d memory_limit = 5G" che genera l'errore.

È un'opzione migliore per correggere questo errore in questa fase. Per risolvere questo problema, apri php.ini e aumenta memory_limit di 1024M ed esegui il comando di compilazione php bin / magento setup: di: compilare

Controlla questo: https://getcomposer.org/doc/articles/tro troubleshooting.md#memory - limit - errors

Questa volta dovrebbe funzionare


0

Se stai affrontando questo problema in Cli, inserisci questo comando

php -dmemory_limit = 8G bin / magento setup: upgrade


0

per M2 aggiungere il limite di memoria tramite ssh con il comando seguente.

per comando di compilazione: php -dmemory_limit=5G bin/magento setup:di:compile per comando di distribuzione: php -dmemory_limit=5G bin/magento setup:static-content:deploy

puoi aumentare il valore 5G se il problema non viene risolto.


0

67

Una rapida soluzione per il limite di memoria nel comando Magento 2 è l'aggiunta diretta del limite di memoria all'interno del comando.

Per il comando Compilation,

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

php -dmemory_limit = 5G bin / magento setup: static-content: deploy Puoi cambiare al massimo da 5G se il problema non si risolve.

funziona davvero :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.