0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHP Fatal error: PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted <...>

Posted at

##はじめに
この記事はプログラミング初学者による備忘録用の記事であり、また、少しでも他の初学者のお役に立てればと思い書いています。

今回は、composer require "doctrine/dbal:2.*"を試みた際に、PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted以下略というメモリに関するエラーが発生しましたので解決策を記録しておきます。

間違いなどがございましたら、ご指摘のほどよろしくお願い致します。

##エラー文

PHP Fatal error:  Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/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.

##解決策

エラー文を読んでみると、どうやら https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors のサイトを読むと解決できるよと教えてくれています。親切ですね。

リンク先のサイトを読んでみると、
Composerは、一部のコマンドでPHP Fatal error: PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted <...> のようなメッセージを表示して失敗することがあるらしく、このような場合はPHPのmemory_limit を増やす必要があると書かれています。

また、$ php -r "echo ini_get('memory_limit').PHP_EOL;"を使うことで、現在のmemory_limitの値を取得することが可能らしく、実際に使用してみると下記のように表示されました。

$ php -r "echo ini_get('memory_limit').PHP_EOL;"
256M

エラー文で必要とされているメモリ値(1610612736 bytes)と上記に書かれているメモリ上限値を比較すると明らかに不足していたのでエラーが発生したと分かります。

PHPのmemory_limit を増やすには、php.iniを修正する必要があり、
修正方法として無制限とする-1 を使うか、2G のように明示的な値を定義します。

php.ini
memory_limit = -1
or
memory_limit = 2G

補足
いくつかの PHPディレクティブでは、バイト値をintではなくGのように省略形で設定できます。

参考:https://www.php.net/manual/ja/faq.using.php#faq.using.shorthandbytes

##おわりに
今回のエラーでは、php.inimemory_limitを修正しメモリ上限値を増やし、docker-compose up --build -dを実行して変更を反映することで、composer require "doctrine/dbal:2.*"が実行できました。

##参考文献
Composer Memory limit errors#

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?