Erreur d'épuisement de la mémoire autorisée de Magento 2 lors de la compilation du code

28

J'ai une erreur lorsque j'ajoute un module ..

Veuillez réexécuter la commande de compilation Magento

donc je lance la commande ci-dessous mais affiche également l'erreur ci-dessous lors de l'exécution de la commande à partir de la racine,

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

Comment réparer ?

Khushbu Mehta
la source
Je reçois la même erreur sur le serveur en direct
SIBHI S

Réponses:

72

Une solution rapide pour la limite de mémoire dans la commande Magento 2 consiste à ajouter directement la limite de mémoire dans la commande.

Pour la commande de compilation,

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

Pour le déploiement

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

Vous pouvez changer selon 5G en max si le problème n'est pas résolu.

Rakesh Jesadiya
la source
1
merci @rakesh cela me fait gagner du temps merci encore une fois
Nagaraju K
1
Attention, l'augmentation de la limite de mémoire ne peut être qu'une solution temporaire.
Macas
8

Il semble que votre cli ne dispose que de 128 Mo de mémoire. Augmentez la valeur à au moins 256 Mo ou 512 Mo si vous le pouvez.

Marius
la source
J'ai essayé une taille de 512 Mo pour mon fichier php.ini mais ne fonctionne toujours pas ... comment résoudre?
Khushbu Mehta
Si vous obtenez toujours Allowed memory size of 134217728 bytesalors vous n'avez pas augmenté la limite de mémoire pour cli.
Marius
Dans quel fichier j'ai défini la limite de mémoire ??
Khushbu Mehta
8

utiliser cette façon «sale»

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

Si vous utilisez PHP> = 5.3.0 et que vous avez utilisé Magento 2.1.x et supérieur, puis après avoir exécuté composer install, deux fichiers seront créés dans votre répertoire racine et votre répertoire pub nommé.user.ini

Modifiez ces fichiers pour remplacer vos paramètres PHP.ini, dans ce cas, memory_limit

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

Si vous utilisez Apache, vous devrez prendre soin des fichiers dans le répertoire racine uniquement, pas /pubcelui et vice versa si vous utilisez engineX (nginx)

J'espère que ça aide.

Toan Nguyen
la source
3

Vous devez augmenter la mémoire allouée à php. Pour augmenter la mémoire, exécutez la commande php --ini. Findout a chargé php.ini. Ça devrait être comme

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,

Accédez au php.ini actuellement chargé (/etc/php5/cli/php.ini) et découvrez le paramètre memory_limit. Augmentez la valeur par rapport au paramètre memory_limit à 256M ou 512M.

Amit Sachan
la source
3

Cette situation peut être difficile à déboguer car si vous

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

il montre la limite de mémoire pour le PHP dans votre chemin, ce qui pourrait être bien. Mais le script magento (bin / magento) utilise le préambule

#!/usr/bin/env php

il n'utilise donc pas nécessairement le PHP de votre chemin! Une façon de retrouver le php.inifichier utilisé est d'écrire un petit script comme celui-ci:

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

appelez-le getinfo(pas getinfo.php!), rendez-le exécutable, puis exécutez-le comme ceci:

./getinfo  | grep php.ini

Cela vous montrera le fichier ini que vous devez modifier. Dans ce fichier, modifiez la valeur de configuration memory_limitcomme suggéré dans d'autres publications, à une valeur supérieure à 128M. Enregistrez ensuite le fichier et vérifiez votre travail:

./getinfo  | grep memory_limit
Scott C Wilson
la source
2

Je rencontre un problème similaire, la limite de mémoire a été augmentée à 2 Go dans le fichier php ini, le fichier phpinfo () a montré qu'il était réglé sur 2 Go. Il semble que Magento ait défini manuellement la limite de mémoire quelque part. J'ai augmenté la limite de mémoire à l'intérieur du fichier bin / magento. En première ligne, je mets ceci:

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

ce qui l'a fait fonctionner.

JohnyFree
la source
2

J'ai une solution pour ma question. Pour une erreur de mémoire épuisée, nous devons ajouter une limite de mémoire pour le code de compilation.

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

J'espère que cela aidera quelqu'un à l'avenir.

Khushbu Mehta
la source
0

Utilisez la ligne suivante après php/bin magento -d memory_limit=5G s:d:c pour votre code de compilation. Cela est dû à la limite de mémoire autorisée pour le php. Mais après avoir autorisé la limite de mémoire dans la commande, cela supprimera l'erreur et votre compilation et les autres commandes s'exécuteront sans erreur. Ajoutez simplement ceci
-d memory_limit=5G dans chaque commande comme vous l'avez vu dans l'exemple ci-dessus. Votez si vous avez trouvé ma réponse utile.

Rakesh Kumar
la source
0

La compilation en utilisant "-d memory_limit = 5G" n'est pas une sage décision. Il s'agit d'une solution temporaire qui peut être affectée pendant le processus de changement de mode, c'est-à-dire du développeur à la production. Cette fois, le système compile le code sans cette logique "-d memory_limit = 5G" qui renvoie l'erreur.

C'est une meilleure option pour corriger cette erreur à ce stade. Pour résoudre ce problème, ouvrez php.ini et augmentez le memory_limit de 1024M et exécutez la commande de compilation php bin / magento setup: di: compile

Vérifiez ceci: https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors

Cette fois ça devrait marcher

zuber bandi
la source
0

Si vous rencontrez ce problème dans Cli, veuillez enregistrer cette commande

php -dmemory_limit = Configuration bin 8G / magento: mise à niveau

hirokapuriya
la source
0

pour M2, ajoutez la limite de mémoire via ssh avec la commande ci-dessous.

pour la commande de compilation: php -dmemory_limit=5G bin/magento setup:di:compile pour la commande de déploiement: php -dmemory_limit=5G bin/magento setup:static-content:deploy

vous pouvez augmenter la valeur 5G si le problème n'est pas résolu.

Anas Mansuri
la source
0

67

Une solution rapide pour la limite de mémoire dans la commande Magento 2 consiste à ajouter directement la limite de mémoire dans la commande.

Pour la commande de compilation,

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

php -dmemory_limit = 5G bin / magento setup: static-content: deploy Vous pouvez changer selon 5G en max si le problème n'est pas résolu.

ça marche vraiment :)

Alauddin Forhad
la source