Composer で “Fatal error: Allowed memory size…”が出た時の対策方法

  • 2020年11月20日
  • 2020年11月20日
  • PHP

新しくサーバーを構築して既存プロジェクトをコピーした際などに、composer installやcomposer updateをすると

PHP Fatal error:  Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer.phar/src/Composer/DependencyResolver/Solver.php on line 220

のようなエラーが出ることがあります。

これはComposerが必要とするメモリ容量よりもphp.iniなどの設定で指定されているPHPが利用できる最大メモリ容量(memory_limitの値)が少ないために発生します。

もちろん、あまりに少ない場合はアプリケーションそのものがうまく動作しなくなるため、ある程度の容量は確保するべきですが、composerの場合は場合によってはさらに多くのメモリを必要とする場合があります。

とはいえ、アプリケーションが使用する以上のメモリ容量をComposerのためだけに割り当てるように設定を変更するのも微妙です。

そこで、Composerを利用するときだけ、一時的にメモリ上限を解除するのがよさそうです。

具体的には、composerを実行する際に次のように指定します。

php -d memory_limit=-1 /usr/local/bin/composer サブコマンド

こうすることで、このコマンドを実行したときに限り、メモリ上限を無効に(マシンに搭載されているRAM容量の上限まで利用)することができます。

上記のコマンドを毎回打つのがめんどくさい…という方は、ログインユーザーの ~/.bashrc などにaliasを記述しておくのがおすすめです。

alias composer='php -d memory_limit=-1 /usr/local/bin/composer'

参考サイト:

composer updateでmemoryが足りない場合の対応方法 – polidog lab++

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG