Laravelの環境を作る中、composer update
した際に以下のエラーが出た。
PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 32 bytes) in
phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchNode.php on line 40
環境
- PHP 5.6
- composer 1.9.1
- CentOS 7.6
原因
Allowed memory size of 1610612736 bytes exhausted
訳:1610612736バイト(≒1.6GB)の許容メモリサイズを使い果たしました
1.6GBもメモリ割り当てていた?かはよくわかりませんが、とにかくメモリサイズが足りないようです。
composerのドキュメントにMemory limit errorsのトラブルシューティングがあります。また、エラーの後ろにもここのURLが載っているので参照してみます。
この場合、PHPのmemory_limitを増やす必要があります。 注:Composerは、memory_limitを内部的に1.5Gに増やします。
php.iniのmemory_limitの設定値を出力するコマンドも載っているので実行してみます。
# php.iniのmemory_limitの設定値を出力する
$ php -r "echo ini_get('memory_limit').PHP_EOL;"
128MB
128MB割り当てられていました。
memory_limit = -1
とするとメモリ割り当てを無制限にすることができます。
# php.iniを編集
$ sudo vi /etc/php.ini
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = -1 ; -1に変更
設定変更後、エラー箇所は乗り越えられました!
参考
- composer doc - troubleshooting #Memory limit errors
- 解決方法がちゃんと載っていて有難い。
- php.net
laravel newコマンドでbash:laravel:command not found
Laravelschedule2020-10-05
LaravelのModelsのディレクトリ構成を変更する
Laravelschedule2020-09-02
【Laravel】UserAgentでガラケー用のViewを切り替えるためのmiddleware
Laravelschedule2020-04-21
PHP Warning Illegal string offset 'foo'
PHPschedule2020-02-03