Magento 2は、コードをコンパイルするときにメモリ不足エラーを許可


28

モジュールを追加するとエラーが発生します。

Magentoのコンパイルコマンドを再実行してください

だから私はコマンドの下で実行しますが、ルートからコマンドを実行すると以下のエラーも表示されます

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

直し方 ?


私は、ライブサーバーで同じエラーを取得しています
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
注意してください、メモリ制限を増やすことは一時的な解決策にすぎません。
マカス

8

cliには128MBのメモリしか割り当てられていないようです。可能な場合は、値を少なくとも256MBまたは512MBに増やします。


私はphp.iniファイルに512MBのサイズを試しましたが、まだ動作しません...どうやって解決しますか?
クシュブメタ

それでも問題が解決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ディレクトリに2つのファイルが作成されます。.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を使用している場合、/pubengineX(nginx)を使用している場合は、ルートディレクトリ内のファイルのみを気にする必要があります。

それが役に立てば幸い。


3

phpに割り当てるメモリを増やす必要があります。メモリを増やすには、commandを実行し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使用されているファイルを追跡する1つの方法は、次のような小さなスクリプトを作成することです。

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

getinfogetinfo.php!ではなく)呼び出し、実行可能にしてから、次のように実行します。

./getinfo  | grep php.ini

これにより、変更する必要があるiniファイルが表示されます。そのファイルで、memory_limit他の投稿で提案されているように、構成値を128Mより大きい値に変更します。次に、ファイルを保存して作業を確認します。

./getinfo  | grep memory_limit

2

私は同様の問題に遭遇し、メモリ制限がphp iniファイル内で2Gbに増加し、phpinfo()ファイルはそれが2Gbに設定されていることを示しました。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

Cliでこの問題に直面している場合は、このコマンドをトレイにしてください

php -dmemory_limit = 8G bin / magento setup:upgrade


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 For Deployment

php -dmemory_limit = 5G bin / magento setup:static-content:deploy問題が解決しない場合は、5Gごとにmaxに変更できます。

その本当に仕事:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.