Composer で Allowed memory size (メモリ不足)エラー

2020/10/24

Composer でインストールする時にメモリ不足のエラーがでることがあります。

$ composer require "laravelcollective/html"
....
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/Cellar/composer/1.10.10/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223

Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.MBP:

PHP のメモリ確認

まず現状の PHP のメモリ上限を確認します。


$ php -i | grep memory_limit
memory_limit => 128M => 128M

メモリが 128M になっています。

php.ini ファイルの確認

PHP 設定ファイル php.ini で設定変更するためファイルパスを調べます。


$ 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/php.ini」が設定ファイルです。

php.ini で memory_limit を設定

php.ini ファイルを修正します


$ vi /usr/local/etc/php/7.4/php.ini

メモリ上限の設定 memory_limit を無制限(-1)に設定します


;memory_limit = 128M
memory_limit = -1

設定が変更されたか確認します。


$ php -i | grep memory_limit
memory_limit => -1 => -1

Composer コマンドのメモリ指定 

Composer コマンド実行時にメモリ制限を無制限にすることもです。以下は、Composer のアップデート処理で PHP のメモリ上限をなしにした実行です。


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