Magento 2 Дозволена помилка вичерпана пам'ять під час компіляції коду


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 на max, якщо проблему не вирішити.


1
дякую @rakesh це економить мій час ще раз дякую вам ще раз
Nagaraju K

1
Будьте обережні, збільшення межі пам'яті може бути лише тимчасовим рішенням.
Макас

8

Схоже, на ваш кліп виділено лише 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 два файли будуть створені у вашій кореневій директорії та папці pub.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як пропонується в інших публікаціях, на більш високе значення, ніж 128М. Потім збережіть файл і перевірте свою роботу:

./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 в кожну команду, як ви бачили в прикладі вище. Оновіть, якщо ви вважаєте мою відповідь корисною.


0

Компіляція за допомогою "-d memory_limit = 5G" не є розумним рішенням. Це тимчасове рішення, на яке може вплинути процес переключення режиму, тобто від розробника до виробництва. Цього разу система компілює код без цієї логіки "-d memory_limit = 5G", яка видає помилку.

Краще варіант виправити цю помилку на цьому етапі. Щоб виправити це, відкрийте php.ini та збільшить memory_limit на 1024M та виконайте компілювати команду php bin / magento setup: di: compile

Перевірте це: https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors

Цього разу це має спрацювати


0

Якщо ви стикаєтеся з цією проблемою у клієнті, будь ласка, вставте цю команду

php -dmemory_limit = Налаштування bin / magento 8G: оновлення


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: di: компілювати для розгортання

php -dmemory_limit = Налаштування bin / magento 5G: статичний контент: розгортання Ви можете змінити на 5G на max, якщо проблема не вирішиться.

це справді працює :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.