Magento 2 erlaubt Speicher erschöpft Fehler beim Kompilieren von Code

28

Ich habe einen Fehler beim Hinzufügen des Moduls.

Führen Sie den Magento-Kompilierungsbefehl erneut aus

Ich führe den folgenden Befehl aus, zeige aber auch den folgenden Fehler an, wenn ich den Befehl von root aus ausführe.

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

Wie repariert man ?

Khushbu Mehta
quelle
Ich
erhalte den

Antworten:

71

Eine schnelle Lösung für die Speicherbeschränkung in Magento 2 besteht darin, die Speicherbeschränkung direkt in den Befehl einzufügen.

Für den Kompilierungsbefehl

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

Für den Einsatz

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

Sie können nach 5G auf max ändern, wenn das Problem nicht behoben werden kann.

Rakesh Jesadiya
quelle
1
danke @rakesh es spart mir zeit danke noch einmal
Nagaraju K
1
Achten Sie darauf, dass das Erhöhen des Speicherlimits nur eine vorübergehende Lösung sein kann.
Macas
8

Anscheinend sind Ihrem CLI nur 128 MB Speicher zugewiesen. Erhöhen Sie den Wert auf mindestens 256 MB oder 512 MB, wenn Sie können.

Marius
quelle
Ich habe eine Größe von 512 MB für meine php.ini-Datei ausprobiert, aber es funktioniert immer noch nicht ... wie kann ich das lösen?
Khushbu Mehta
Wenn Sie immer noch erhalten, haben Allowed memory size of 134217728 bytesSie das Speicherlimit für cli nicht erhöht.
Marius
In welcher Datei stelle ich das Speicherlimit ein?
Khushbu Mehta
8

benutze diesen 'schmutzigen' Weg

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

Wenn Sie PHP> = 5.3.0 verwenden und Magento 2.1.x oder höher verwenden, werden nach dem Ausführen composer installzwei Dateien in Ihrem Stammverzeichnis und in Ihrem Pub-Verzeichnis mit dem Namen erstellt.user.ini

Bearbeiten Sie diese Dateien, um Ihre PHP.ini-Einstellungen zu überschreiben memory_limit

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

Wenn Sie Apache verwenden, müssen Sie sich nur um die Dateien im Stammverzeichnis kümmern, nicht um die Dateien /pubund umgekehrt, wenn Sie engineX (nginx) verwenden.

Ich hoffe es hilft.

Toan Nguyen
quelle
3

Sie müssen den für PHP zugewiesenen Speicher erhöhen. Führen Sie den Befehl aus, um den Speicher zu vergrößern php --ini. Findout geladen php.ini. Es sollte so sein

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,

Gehen Sie zur aktuell geladenen php.ini (/etc/php5/cli/php.ini) und finden Sie den Parameter memory_limit heraus. Erhöhen Sie den Wert für den Parameter memory_limit auf 256M oder 512M.

Amit Sachan
quelle
3

Diese Situation kann schwierig zu debuggen sein, wenn Sie es nur tun

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

es zeigt das Speicherlimit für das PHP in Ihrem Pfad, was in Ordnung sein könnte. Das Magento-Skript (bin / magento) verwendet jedoch die Präambel

#!/usr/bin/env php

Es muss also nicht unbedingt PHP von Ihrem Weg aus verwenden! Eine Möglichkeit, die verwendete php.iniDatei aufzuspüren , besteht darin, ein kleines Skript wie das folgende zu schreiben:

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

Nennen Sie es getinfo(nicht getinfo.php!), machen Sie es ausführbar und führen Sie es dann folgendermaßen aus:

./getinfo  | grep php.ini

Dies zeigt Ihnen die INI-Datei, die Sie ändern müssen. Ändern Sie in dieser Datei den memory_limitin anderen Beiträgen vorgeschlagenen Konfigurationswert auf einen höheren Wert als 128 MB. Speichern Sie dann die Datei und überprüfen Sie Ihre Arbeit:

./getinfo  | grep memory_limit
Scott C Wilson
quelle
2

Ich stoße auf ein ähnliches Problem. Das Speicherlimit wurde in der PHP INI-Datei auf 2 GB erhöht. Die Datei phpinfo () zeigte, dass sie auf 2 GB eingestellt war. Anscheinend hat Magento das Speicherlimit irgendwo manuell festgelegt. Ich habe das Speicherlimit in der Datei bin / magento erhöht. In die erste Zeile stelle ich folgendes:

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

was hat es funktioniert.

JohnyFree
quelle
2

Ich habe eine Lösung für meine Frage. Für Fehler mit erschöpftem Speicher müssen wir ein Speicherlimit für den Kompilierungscode hinzufügen.

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

Hoffe, es wird jemandem in Zukunft helfen.

Khushbu Mehta
quelle
0

Verwenden Sie die folgende Zeile nach php/bin magento -d memory_limit=5G s:d:c für Ihren Kompilierungscode. Dies liegt an der zulässigen Speicherbegrenzung für das PHP. Nachdem Sie das Speicherlimit im Befehl zugelassen haben, wird der Fehler behoben, und Ihre Kompilierung und andere Befehle werden fehlerfrei ausgeführt. Fügen Sie dies einfach
-d memory_limit=5G in jeden Befehl ein, wie Sie im obigen Beispiel gesehen haben. Upvote, wenn Sie meine Antwort nützlich fanden.

Rakesh Kumar
quelle
0

Das Kompilieren mit "-d memory_limit = 5G" ist keine kluge Entscheidung. Es ist eine vorübergehende Lösung, die während des Moduswechsels, dh vom Entwickler zur Produktion, beeinträchtigt werden kann. Dieses Mal kompiliert das System den Code ohne diese Logik "-d memory_limit = 5G", die den Fehler auslöst.

Es ist eine bessere Möglichkeit, diesen Fehler zu diesem Zeitpunkt zu beheben. Um dies zu beheben, öffnen Sie die Datei php.ini und erhöhen Sie das memory_limit um 1024M. Führen Sie den Kompilierungsbefehl php bin / magento setup: di: compile aus

Überprüfen Sie dies: https://getcomposer.org/doc/articles/troubleshooter.md#memory-limit-errors

Diesmal sollte es funktionieren

zuber bandi
quelle
0

Wenn Sie mit diesem Problem in Cli konfrontiert sind, legen Sie bitte diesen Befehl in der Taskleiste ab

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

Hirokapuriya
quelle
0

für M2 füge Speicherlimit über ssh mit dem folgenden Befehl hinzu.

für Kompilierungsbefehl: php -dmemory_limit=5G bin/magento setup:di:compile für Bereitstellungsbefehl: php -dmemory_limit=5G bin/magento setup:static-content:deploy

Sie können den Wert 5G erhöhen, wenn das Problem nicht behoben ist.

Anas Mansuri
quelle
0

67

Eine schnelle Lösung für die Speicherbeschränkung in Magento 2 besteht darin, die Speicherbeschränkung direkt in den Befehl einzufügen.

Für den Kompilierungsbefehl

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

php -dmemory_limit = 5G bin / magento setup: statischer inhalt: bereitstellen Sie können nach 5G auf max ändern, wenn das Problem nicht behoben ist.

es funktioniert wirklich :)

Alauddin Forhad
quelle