Help us understand the problem. What is going on with this article?

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. メモリ制限を外す

$ php -d memory_limit=-1 $(which composer) update

-d オプションは、
php.ini ディレクティブを個別に指定する事ができます。

php.ini を書き換えるのは手間なのでコマンドオプションとして -1 を指定して一時的にメモリの制限を設けないようにします。

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ファイルを作成しています。

$ php -d memory_limit=-1 $(which composer) update

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

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

参考

ucan-lab
Backend Developer at ROLO. I love PHP and I'm focusing on Laravel, Docker, GraphQL.
https://u-can.pro
miraito-inc
システムデザインを中心に置いた開発により高品質で使いやすいシステムを提供いたします。業務システム構築、アプリ開発、コンサルティングまで幅広く手がけています。
https://miraito-inc.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした