search
LoginSignup
49

More than 1 year has passed since last update.

posted at

updated at

composer update でメモリオーバーする場合の対策

composer updatecomposer require した時に使用可能なメモリを超えるとこのようなエラーが発生します。

$ composer update
[13-Jul-2020 10:10:03 UTC] PHP Fatal error:  Allowed memory size of 2097152 bytes exhausted (tried to allocate 1974272 bytes) in Unknown on line 0

対策1. メモリ制限を外す

$ COMPOSER_MEMORY_LIMIT=-1 $(which composer) update

COMPOSER_MEMORY_LIMIT=-1 一時的にphp.iniで設定されているMEMORY_LIMITを無制限にしています。
php コマンドで実行するため、実行したいファイル名を絶対パス、または相対パスで指定する必要があります。
$(which composer) でComposerまでの絶対パスを指定してます。

対策2. スワップファイルを作る

対策1でも解決しない場合、物理的にメモリが足りない可能性があります。(AWSのマイクロインスタンス等)
Swapファイルの作り方は下記のように作成します。

スワップとは

$ sudo /bin/dd if=/dev/zero of=/var/swap bs=1M count=1024
$ sudo /sbin/mkswap /var/swap
$ sudo /sbin/swapon /var/swap

1GB分のSwapファイルを作成しています。

$ COMPOSER_MEMORY_LIMIT=-1 $(which composer) update

Swapファイルは作成したままでも構いませんが、今度はディスク容量を1GB分使用してしまいます。
Swapファイルを削除する場合は下記のコマンドを実行します。

$ sudo swapoff /var/swap
$ sudo rm /var/swap

参考

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
What you can do with signing up
49