schedule2019-11-25

composer updateしたときのPHP Fatal error:Allowed memory size of xxx bytes exhausted

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.net - memory_limit

# 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に変更

設定変更後、エラー箇所は乗り越えられました!

参考