Magento 2 Allowed Memory исчерпала ошибку при компиляции кода

28

У меня ошибка при добавлении модуля ..

Пожалуйста, повторите команду компиляции Magento

так что я запускаю ниже команды, но также отображаю ошибку, которая ниже, когда запускаю команду от root

Настройка php magento: 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

Как исправить ?

Кушбу Мехта
источник
Я получаю ту же ошибку на живом сервере
SIBHI S

Ответы:

72

Быстрое решение для ограничения памяти в команде Magento 2 заключается в прямом добавлении ограничения памяти внутри команды.

Для команды Компиляция,

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

Для развертывания

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

Вы можете изменить в соответствии с 5G на максимум, если проблема не решается.

Ракеш Джесадия
источник
1
спасибо @rakesh это экономит мое время большое спасибо еще раз
Nagaraju K
1
Будьте осторожны, увеличение лимита памяти может быть только временным решением.
Macas
8

Похоже, у вашего cli выделено всего 128 МБ памяти. Увеличьте значение как минимум до 256 МБ или 512 МБ, если можете.

Мариус
источник
Я пытался 512 МБ для моего файла php.ini, но все еще не работает ... как решить?
Хушбу Мехта
Если вы все еще получаете, Allowed memory size of 134217728 bytesто вы не увеличили лимит памяти для cli.
Мариус
В каком файле я установил лимит памяти ??
Хушбу Мехта
8

использовать этот «грязный» способ

php -dmemory_limit=-1 bin/magento setup:di:compile
Ansyori
источник
6
php -dmemory_limit=6G bin/magento setup:di:compile
Шешгири Анвекар
источник
5

Если вы используете PHP> = 5.3.0 и используете Magento 2.1.x и выше, то после запуска composer installв вашем корневом каталоге будут созданы два файла и каталог вашего паба с именем.user.ini

Отредактируйте эти файлы, чтобы переопределить ваши настройки PHP.ini, в данном случае это memory_limit

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

Если вы используете Apache, вам нужно заботиться только о файлах внутри корневого каталога, а не об /pubодном, и наоборот, если вы используете engineX (nginx)

Надеюсь, это поможет.

Тоан Нгуен
источник
3

Вам нужно увеличить память, выделенную для php. Чтобы увеличить память, выполните команду php --ini. Поиск загружен php.ini. Должно быть как

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,

Перейдите к текущему загруженному php.ini (/etc/php5/cli/php.ini) и найдите параметр memory_limit. Увеличьте значение параметра memory_limit до 256M или 512M.

Амит Сачан
источник
3

Эта ситуация может быть сложно отладить, так как если вы просто

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

он показывает ограничение памяти для PHP на вашем пути, что может быть хорошо. Но скрипт magento (bin / magento) использует преамбулу

#!/usr/bin/env php

так что не обязательно использовать PHP с вашего пути! Один из способов отследить используемый php.iniфайл - написать небольшой скрипт, например так:

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

назовите его getinfo(не getinfo.php!), сделайте его исполняемым, затем запустите его так:

./getinfo  | grep php.ini

Это покажет вам INI-файл, который вам нужно изменить. В этом файле измените значение конфигурации, memory_limitкак предлагается в других публикациях, на более высокое значение, чем 128M. Затем сохраните файл и проверьте свою работу:

./getinfo  | grep memory_limit
Скотт К Уилсон
источник
2

Я столкнулся с подобной проблемой, предел памяти был увеличен до 2 ГБ внутри файла php ini, файл phpinfo () показал, что он установлен на 2 ГБ. Кажется, Magento где-то установил лимит памяти вручную. Я увеличил лимит памяти внутри файла bin / magento. В первой строке я поставил это:

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

что заставило это работать.

JohnyFree
источник
2

У меня есть решение для моего вопроса. Для ошибки исчерпания памяти, мы должны добавить ограничение памяти для кода компиляции.

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

Надеюсь, это поможет кому-то в будущем.

Кушбу Мехта
источник
0

Используйте следующую строку php/bin magento -d memory_limit=5G s:d:c для вашего кода компиляции. Это связано с разрешенным пределом памяти для php. Но после разрешения ограничения памяти в команде это устранит ошибку, и ваша компиляция и другие команды будут выполняться без ошибок. Просто добавьте это
-d memory_limit=5G в каждую команду, как вы видели в примере выше. Upvote, если вы нашли мой ответ полезным.

Ракеш Кумар
источник
0

Компиляция с использованием -d memory_limit = 5G не является мудрым решением. Это временное решение, на которое может повлиять процесс переключения режимов, т. Е. От разработчика к производству. На этот раз система компилирует код без этой логики "-d memory_limit = 5G", которая выдает ошибку.

На данном этапе лучше исправить эту ошибку. Чтобы это исправить, откройте php.ini и увеличьте memory_limit на 1024M и выполните команду compile php bin / magento setup: di: compile

Проверьте это: https://getcomposer.org/doc/articles/troublesho.md#memory-limit-errors

На этот раз это должно работать

Zuber Bandi
источник
0

Если вы столкнулись с этой проблемой в Cli, пожалуйста, подайте эту команду

php -dmemory_limit = 8G bin / magento setup: обновить

hirokapuriya
источник
0

для M2 добавьте ограничение памяти через ssh с помощью команды ниже.

для команды компиляции: php -dmemory_limit=5G bin/magento setup:di:compile для команды развертывания: php -dmemory_limit=5G bin/magento setup:static-content:deploy

Вы можете увеличить значение 5G, если проблема не решена.

Анас Мансури
источник
0

67

Быстрое решение для ограничения памяти в команде Magento 2 заключается в прямом добавлении ограничения памяти внутри команды.

Для команды Компиляция,

php -dmemory_limit = 5G bin / magento setup: di: compile Для развертывания

php -dmemory_limit = 5G bin / magento setup: static-content: deploy Вы можете изменить максимальное значение 5G, если проблема не устраняется.

это действительно работает :)

Алауддин Фохад
источник