Composerでinstallやupdateを行った際にメモリエラーが出たときの対処方法を紹介します。
Contents
メモリエラーが出る
Composer実行時に下記のようなエラーが出ました。
1 2 3 4 5 6 7 | Loading composer repositories with package information Updating dependencies (including require-dev) PHP Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 32 bytes) in phar:///var/www/html/composer.phar/src/Composer/DependencyResolver/RuleWatchNode.php on line 40 Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 32 bytes) in phar:///var/www/html/composer.phar/src/Composer/DependencyResolver/RuleWatchNode.php on line 40 Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors. |
原因はphpで利用可能なメモリー不足です。
PHPのメモリを上げて対処する
PHPメモリの量を確認
現在の設定を確認しましょう。
「/etc/php.ini」を開きます。
「memory_limit」という項目が現在の設定値です。
下記コマンドでも確認できます。
1 | php -r 'phpinfo();' | grep memory_limit |
PHPメモリ量を増やす
memory_limitの量を増やしてみましょう。
再度実行
増やしたメモリ量で足りていればちゃんとできるはずです。
それでも足りない場合にはさらに増やしましょう。
Composer実行時のみメモリを増やす
php.iniを書き換えずに、実行時にメモリを指定することができます。
1 | php -d memory_limit=-1 composer.phar update |
上記の場合は無制限で実行です。
PHPメモリ量を上げてもできない場合
スワップファイルを作成する
1 | $ sudo -s /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 |
上記コマンドでスワップファイルを作成します。
スワップファイルを有効化
1 2 | $ sudo -s /sbin/mkswap /var/swap.1 $ sudo -s /sbin/swapon /var/swap.1 |
これでOKです。
再度Composerを実行
おそらくこれでできると思います。