ある日にcomposer requireすると、エラーが表示
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がいっぱい?
macの容量、メモリ共に空いていますけど??
調べてみると、
php.iniに記載されている、memory_limitが上限に達したようだ。
デフォルトだと128MBが設定されているので、それを更新させる必要がある。
php.iniを作成
macにはphp.ini.default
というファイルが存在し、これをコピーで複製して、設定を変えて改善させます。
ファイルの場所は/private/etc/php.ini.default
です。
コマンドで確認したい場合は、
php -i | grep php.ini
で確認できます。
なので、これをコピーしてphp.iniを作成しましょう。
sudo cp -p /etc/php.ini.default /etc/php.ini
でphp.iniを作成します。
容量の変更
現在のメモリーを確認するコマンドを実行しましょう。
コマンド
$ php -i | grep memory_limit
memory_limit => 128M => 128M
128Mと分かります。
これを変更したいので、
vim /etc/php.ini
memory_limitを見つけて変更します
容量の上限を上げる
memory_limit = 528M
容量を無制限にする
memory_limit = -1
保存時にエラーが発生する
[vim]read only
と表示されて、:wq
で保存できません。
そこで、
:w !sudo tee %
を手入力して実行
画面に変化が現れますので、さらに
vim画面から脱するために
:q!
で終了します。
確認
$ php -i | grep memory_limit
memory_limit => -1 => -1
これで反映されたことが分かります。
改めてcomposerを実行すると、
Package manifest generated successfully.
とインストールに成功したことが分かります。
これで解決です
その他
調べると他の方法もあるようです。
コマンド
$ composer update
でエラーが出た場合、
コマンド
$ php -d memory_limit=512M composer update
とphp -d memory_limit=512M
をつけることで実行可能みたいです。
composer requireだと
$ php -d memory_limit=-1 composer.phar require ~
と記述することで実施可能みたいです。