Composerはメモリ不足を要求します。PHPの致命的なエラー:1610612736バイトの許容メモリサイズが使い果たされました


255

以下のコマンドを実行して、HWIOAuthBundleをプロジェクトに追加しようとしています。

composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

HWIOAuthBundle github:https//github.com/hwi/HWIOAuthBundle

Composerを実行しようとすると、メモリ不足エラーが発生します。

hwi / oauth-bundleにバージョン^ 0.6.0 @devを使用するphp-http / guzzle6-adapterにバージョン^ 1.2 @devを使用するphp-http / httplug-bundle./composer.jsonにバージョン^1.10@devを使用するが更新されましたパッケージ情報を含むコンポーザーリポジトリのロード依存関係の更新(require-devを含む)

PHPの致命的なエラー:phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solverで許可された1610612736バイトのメモリサイズが使い果たされました(67108864バイトを割り当てようとしました)。 220行目のphp

致命的なエラー:phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.phpで許可された1610612736バイトのメモリサイズが使い果たされました(67108864バイトを割り当てようとしました) 220行目

php.iniファイルでmemory_limitを2Gに設定しようとしましたが、機能しませんでした。実行してphp.iniを見つけましたphp -i | grep php.ini


3
最近、作曲家の自己更新をしましたか?エラーメッセージの1.4.2がバージョン1.4.2を示しているかどうかはわかりませんが、composerの最新バージョンは1.6.2です。そして、どのくらいの物理メモリがありますか?それはVMまたはクラウドサーバーですか?
Cerad 2018年

@Ceradはい-以前に作曲家の自己更新を行いました。作曲家のバージョンは1.6.2です
Brian Chen

@Ceradこれは私のローカルマシンにあり、十分なメモリが必要です
Brian Chen

以前にComposerが正常に実行されていたプロジェクトでこの問題が発生した場合は、を実行することをお勧めしcomposer self-update --rollbackます。私はv.1.9.3でメモリの枯渇に遭遇し始めましたが、1.8.6にロールバックすると停止しました。
karolus

実行中にcomposer require1.5Gを超えるメモリを使用できるのはかなりクレイジーだと誰も思っていませんか?これを最初に見たとき、それは作曲家のバグであるに違いないと思いました。メモリ制限を-1に設定することは私にとってはうまくいきました...しかし、一体どうして1.5Gでは不十分ですか?作曲家は本当にそんなに必要ですか?
ダニエルハワード

回答:


381

現在のmemory_limit値を取得するには、次のコマンドを実行します。

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

php.iniファイルの制限を増やしてみてください(/etc/php5/cli/php.iniDebianのようなシステムの場合など)。

; Use -1 for unlimited or define an explicit value like 2G
memory_limit = -1

または、コマンドライン引数を使用して制限を増やすことができます。

php -d memory_limit=-1 composer.phar require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

ロードされたphp.iniファイルの場所を取得するには、次のことを試してください。

php --ini

別の簡単な解決策:

php composer.phar COMPOSER_MEMORY_LIMIT=-1 require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

33
COMPOSER_MEMORY_LIMIT = -1つのcomposerアップデートも機能します。
KishanPatel20年

1
コマンドをありがとうphp --ini!PHP 7.4で、あなたはCLIDに異なるPHP iniファイル(PHP-cli.ini)を持っている
ヴィンセントDecaux

4
使用php -d memory_limit=-1 composer.phar installは私のために働いた。ありがとう!
TomaszKuter20年

1
memory_limit = -1は良い解決策ですか?メモリ消費制限がなくなり、すべてを使い果たす可能性があるようです。
kamoteulalo20年

2
Windowsでは、次を使用しますSET COMPOSER_MEMORY_LIMIT=-1
VincentDecaux20年

298

私の場合、私はこのパッケージを要求しようとしていて、を取得していましたPHP Fatal error: Allowed memory size of

このように実行するのは簡単で、PHPINIファイルを更新する必要はありません。

例: COMPOSER_MEMORY_LIMIT=-1 composer require huddledigital/zendesk-laravel

これが誰かを助けることを願っています。


また助けた。私のPHPの制限は128MBでしたが、エラーメッセージにはPHPコンポーザーの制限が1.5GBであることが示されていました(つまり、この特定のケースのために他の場所で構成されています)。したがって、php.iniの変更は役に立ちませんでしたが、この答えは役に立ちました。
トム

83

マニュアルからの別の解決策:

Composerは、COMPOSER_MEMORY_LIMIT環境変数によって定義されたメモリ制限も尊重します。

COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>

または私の場合

export COMPOSER_MEMORY_LIMIT=-1
composer <...>

13
Macで編集~/.bash_profileして追加alias composer="COMPOSER_MEMORY_LIMIT=-1 composer"しましたが、それで解決しました。変更後のファイルをソースまたは端末を再起動してください
nicholas.alipaz

45

Windows10の場合;

後藤 C:\ProgramData\ComposerSetup\bin

編集:composer.batそして、memory_limit=-1以下に示すように最後の行に追加します。

@echo OFF
:: in case DelayedExpansion is on and a path contains ! 
setlocal DISABLEDELAYEDEXPANSION
php -d memory_limit=-1 "%~dp0composer.phar" %*

問題が解決しました ;)


3
私にとって最高のもので、ほとんどすべてが私にとってはうまくいきませんでした。
krachleur

1
また、最後の行に.bat拡張子のないcomposerファイルを更新する必要がありました(同じ-d memory_limit = -1を追加)。
MaulikGangani20年

Windowsでは、の場所は常にであるcomposer.bat必要はありませんがC:\ProgramData\ComposerSetup\bin、それがデフォルトの場所だと思います。ただし、誰かcomposer.batwhereコマンドを実行する必要がある場所を見つけたい場合は、次のようにしwhere composerます。正確な場所が表示されます。
rineez

30

以前の回答には含まれsetていなかったため、php.iniを変更せずにWindowsでそれを行う方法を理解するのに少し時間がかかりましたが、これが私にとってうまくいったことです:

set COMPOSER_MEMORY_LIMIT=-1
composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

1
これは、Windows環境のベストアンサーです。ありがとう:)
sykez20年

23

ただ、設定memory_limitコマンドを使用して、私の場合には、お使いのcomposer.pharファイルや更新の完全なルートを指定:

php -d memory_limit=-1 C:/wamp64/composer.phar update

6
またCOMPOSER_MEMORY_LIMIT=-1 composer.phar update動作します。参照:getcomposer.org/doc/articles/...
mayid

5
ubuntuでこれを使用してくださいphp -d memory_limit=-1 /usr/bin/composer update
卑劣な

COMPOSER_MEMORY_LIMIT = -1つの作曲家も私のために働きます.. @ mayidありがとう。:+1
KishanPatel20年

23

同じ問題、「memory_limit」に関連するものは何も機能しませんでしたが、..

composer self-update --2

..私の問題を解決しました。(アップグレード:1.10.17-> 2.0.4)


3
それらのためにcomposer self-update --2-動作せず、エラーが発生しました。 composer self-update --stable仕事をしました:)
WebMan20年

20

最近、Composerが多くの履歴タグを持つパッケージで高いCPU +メモリを消費することが確認されました。作曲家/作曲家#7577を参照

この問題の回避策は、symfony/flexまたはhttps://github.com/rubenrua/symfony-clean-tags-composer-pluginを使用することです

composer global require rubenrua/symfony-clean-tags-composer-plugin

1
プラグインをグローバルにインストールする必要がありますか?他に何もすることはありませんか?このプラグインが実際に何をするのか説明していただけますか?このような場合、composerによるメモリ使用量を削減できますか?
rineez

17

次のようなコンポーザーエラーが発生した場合に備えて:

入力ファイルを開くことができませんでした:composer

実行:

php -d memory_limit=-1 /usr/local/bin/composer require ...

15

メモリ制限とバージョンエラーをスキップするには、以下のコードを使用します。

COMPOSER_MEMORY_LIMIT=-1 composer require <package-name> --ignore-platform-reqs

15

macOSCatalinaとmacOSBig Surのこのエラーには、次の行を使用します。

php -d memory_limit=-1 /usr/local/bin/composer update --no-plugins

この行を使用してSymfony5を更新しました。このコマンドはlaravel7でも機能しました。


14

次の前にあるcomposerコマンドを実行するHomesteadLaravel(vagrant)仮想マシンで問題を回避しましたCOMPOSER_MEMORY_LIMIT=-1

Composerを更新するには:

COMPOSER_MEMORY_LIMIT=-1 composer update

パッケージをインストールするには:

COMPOSER_MEMORY_LIMIT=-1 composer require spatie/laravel-translatable

ありがとう、相棒!グローバルに更新されますか、それともその特定のコマンドに対してのみ更新されますか?
andcl

1
その特定のコマンドの一時的な解決策です。
DavideCasiraghi20年

11

時々問題は作曲家のメモリ制限にあります。私の場合、phpのメモリ制限を増やしてみましたが、それでもエラーが発生しました。あなたはCOMPOSER_MEMORY_LIMIT=-1それを回避するために使用することができます。プレフィックスとして使用します。

COMPOSER_MEMORY_LIMIT=-1 composer require the/library

将来、プレフィックスを再度付ける必要があります。

お役に立てれば。


9

Windowsはどうですか?

私はWindows10を使用していますが、このコマンドは機能しました。

php -d memory_limit=-1 "C:\ProgramData\ComposerSetup\bin\composer.phar" update


5

Composerの実行時に、特定のphpバージョンを使用できます

私のように、何らかの理由で、コンピューターが64ビットであってもPHP 32ビットを使用している場合、これにより、Composerに割り当てられるメモリの量が常に制限されます。私はこの方法で問題を解決しました:

  • コンピューターのどこかに64ビットのphpバージョンをインストールします(たとえば、C:/ php64)
  • Composerで(私の場合はcygwinを使用)、次のコマンドを実行します。

COMPOSER_MEMORY_LIMIT=-1 C:/php64/php.exe ../composer.phar update


この提案は私のために働いた!ありがとう。新しい64ビットバージョンをグローバルに使用するには、システム環境変数も更新する必要があることに注意してください。
GentleGiant

3

この問題に関する私の状況を共有したいだけです。

問題のコンテキスト:

  1. 作曲家を放浪者の箱で走らせている。
  2. Composerを実行しようとした後にこのメッセージが表示されましたrequire "laravel-doctrine / orm:〜1.4.13":

致命的なエラー:52行目のphar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.phpで許可された1610612736バイトのメモリサイズが使い果たされました(4096バイトを割り当てようとしました)https:// getcomposerを確認してくださいメモリ不足エラーを処理する方法の詳細については、org / doc / articles /troubleshooting.md#memory-limit-errorsを参照してください。

  1. php.iniのメモリ制限を-1に設定してみました。(まだ動作していません)。

解決:

  1. どうやら私のcomposer.jsonとcomposer.lockにはいくつかの問題があります。$ composer validateを実行した結果、「ロックファイルはcomposer.jsonの最新の変更で最新ではないため、実行することをお勧めしますcomposer update。」

  2. そこで、$ composer updateを実行すると、すべての依存関係が解決されました。Imho、依存関係にいくつかの問題がある場合、ツリーの構築が同期していないため、メモリ不足の問題が発生している可能性があります。

これが誰にでも役立つことを願っています。


3

これを上書きしてローカルマシンの問題を修正するには、php.ini構成ファイル内で次の変更を行うことができます。

  1. php.ini構成ファイルを見つけるには、次のコマンドを使用できます。php --ini

このコマンドを実行すると、次のような出力が表示されます。

Configuration File (php.ini) Path: /usr/local/etc/php/7.3
Loaded Configuration File:         /usr/local/etc/php/7.3/php.ini <---- note the path
Scan for additional .ini files in: /usr/local/etc/php/7.3/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.3/conf.d/ext-opcache.ini

変更するファイルは、ロードされた構成です。

  1. を開いて検索し、PHPプロセスに無制限のメモリを与えるようにmemory_limit設定するmemory_limit = -1か、設定することができます512MB, 1G, 2G, 5G,....

    $ nano /usr/local/etc/php/7.3/php.ini

見つけて設定する:

$ memory_limit = -1 or memory_limit = 1G
  1. ファイルを保存した後、次のコマンドを実行してPHPの変更を確認できます。これにより、php.iniファイルの現在のメモリ設定が出力されます。

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

注:保存後、新しいメモリは機能します。他に何もする必要はありません。

詳細:https//support.acquia.com/hc/en-us/articles/360036102614-Overriding-memory-limits-during-local-development-with-Composer


3

Mac php7.4の場合

実行

php --ini

Configuration File (php.ini) Path: /usr/local/etc/php/7.4
Loaded Configuration File:         /usr/local/etc/php/7.4/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.4/conf.d/ext-opcache.ini,
/usr/local/etc/php/7.4/conf.d/php-memory-limits.ini

追加の.iniファイルを解析する場合:memory_limitをで変更する必要があります

/usr/local/etc/php/7.4/conf.d/php-memory-limits.ini

Jose Seieが書いているように、メモリをに設定します

memory_limit = -1 or memory_limit = 1G

3

xamppによるWindowsで私はちょうど変更しました:

;memory_limit=512M 

php.iniで:

memory_limit =-1

次に、xamppでApacheを再起動します

これが結果です:

; Maximum amount of memory a script may consume
; http://php.net/memory-limit
memory_limit =-1
;memory_limit=512M

2
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52 Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.

memory_limit-1に設定するとうまくいきます;)(vim /etc/php/7.2/cli/php.ini)


2

Macbookの場合:コマンドsudo nano ~/.bash_profileを実行してbash_profileを編集しalias composer="COMPOSER_MEMORY_LIMIT=-1 composer"、そのファイルを追加してから、保存して終了します。

これで問題が解決することを願っています。ハッピーコーディング!


1

ここで、有用で受け入れられた回答を再利用可能な(zsh)エイリアス/関数に凝縮またはパッケージ化して、より迅速で覚えやすい再利用を実現しました。

# composer high-memory
composermem() {
  php -r "echo ini_get('memory_limit').PHP_EOL;"
}
alias composerbig='COMPOSER_MEMORY_LIMIT=-1 composer $1'

(システム上でphp composer.pharすでにエイリアス化さcomposerれています)。


1

このコマンドCOMPOSER_MEMORY_LIMIT = -1を使用してこの問題を解決しました

例:COMPOSER_MEMORY_LIMIT = -1コンポーザーにはlarval / uiが必要です


0

ベンダーフォルダが存在することを確認する前に、パッケージを必要としないことを確認してください。

composer install以前に行ったことがあるかどうかを確認してください。リポジトリを自分のマシンに複製しただけかもしれません。したがって、新しいパッケージを要求する前に、古いパッケージをインストールする必要があります。または、このオプション--profileをcomposerコマンドに含めて、タイミングとメモリ使用量の情報を確認することもできます。


-1

Wampserverを使用している場合、Windowsでこの問題を解決する別の方法があります。実際、wampserverのレベルでは、2つのphp.iniファイルがあります。PHPのファイルはCの場所にあります。\ wamp64 \ bin \ php \ phpx.xx \ php.iniとApacheのファイルです。場所Cで見つかりました:\ wamp64 \ bin \ apache \ apachex.xx \ bin \ php.ini。これらのファイルには両方ともmemory_limitパラメーターがあります。したがって、この問題を確実に解決するには、両方のファイルで一度にmemory_limit = -1パラメーターを設定することをお勧めします。


1
memory_limitWebサーバーのを設定しても、Composerの実行には影響しません。さらに、memory_limit = -1グローバルに使用することは、実行中のすべてのPHPプロセスをメモリの枯渇にさらすため、最後のオプションである必要があります。必要なときにだけ設定し、開始プロセスに直接接続することをお勧めします
NicoHaase19年

-1

私はphp7.2を使用しており、サイズはmemory_limit = 512Mデフォルトでに設定されています。サイズを大きくするには、を見つける必要がありますphp.ini

Wamp、にありますC:\wamp64\bin\php\php7.2.23\php.ini。私の場合は名前フォルダなので、PHPバージョンに注意してください。php7.2.23

Laragon、それは次の場所にあります。C:\laragon\bin\php\php-7.2.23-Win32-VC15-x64\php.ini私の場合にあったように。

無制限のスペースを許可したくない場合は、都合のよいサイズを設定できます。私の場合は、 memory_limit = 2G

無制限のスペースを許可したい場合は、に変更できます memory_limit = -1



-2

xamppの場合はPHPディレクトリ内のphp.iniを見つけて、xampp / PHP内にあり、php.iniファイル内でmemory_limit:512Mを2048Mに更新します。


彼が設定されているOP状態-あなたの答えにいくつかのより多くの説明を追加してくださいmemory_limitすでに2Gに
ニコハーゼ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.