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


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');

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


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

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


0

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

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


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, если проблема не устраняется.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.