composer update
や composer require
した時に使用可能なメモリを超えるとこのようなエラーが発生します。
$ composer update
[13-Jul-2020 10:10:03 UTC] PHP Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 1974272 bytes) in Unknown on line 0
対策1. メモリ制限を外す
$ COMPOSER_MEMORY_LIMIT=-1 $(which composer) update
COMPOSER_MEMORY_LIMIT=-1
一時的にphp.ini
で設定されているMEMORY_LIMIT
を無制限にしています。
php
コマンドで実行するため、実行したいファイル名を絶対パス、または相対パスで指定する必要があります。
$(which composer)
でComposerまでの絶対パスを指定してます。
対策2. スワップファイルを作る
対策1でも解決しない場合、物理的にメモリが足りない可能性があります。(AWSのマイクロインスタンス等)
Swapファイルの作り方は下記のように作成します。
$ sudo /bin/dd if=/dev/zero of=/var/swap bs=1M count=1024
$ sudo /sbin/mkswap /var/swap
$ sudo /sbin/swapon /var/swap
1GB分のSwapファイルを作成しています。
$ COMPOSER_MEMORY_LIMIT=-1 $(which composer) update
Swapファイルは作成したままでも構いませんが、今度はディスク容量を1GB分使用してしまいます。
Swapファイルを削除する場合は下記のコマンドを実行します。
$ sudo swapoff /var/swap
$ sudo rm /var/swap