新しくサーバーを構築して既存プロジェクトをコピーした際などに、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++