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 ?


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.


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.


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


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.


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.


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

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.


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.


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.


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


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


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.


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 :)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.