Fatal error: Out of memory (allocated 847511552) (tried to allocate 134217728 bytes) in
phar:///home/webuser/www/composer.phar/src/Composer/DependencyResolver/Solver.php
on line 223
要は
composer update
を実行するのにメモリが足りないということ。PHPに割り当てられているメモリがそもそも少ない場合には、増やしましょう。それでもダメな場合はサーバに乗せられているメモリが足りないってことです。メモリを増強すればもちろん解決出来ますが、このためだけに増強するのはコスト的に割が合わないので、現在の環境のままで解決したい。Swapファイルを利用しましょう。
参考:メモリが足りないのでSwapファイルを作ってライブラリをインストールする – Qiita$ sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
$ sudo /sbin/mkswap /var/swap.1
$ sudo /sbin/swapon /var/swap.1
簡単にいえば1MBのファイルを1,024個用意する=1GBのSwapファイルを用意するという意味になります。これを実施した上で、念のためhttpdを止めて実行すると成功率が上がります。
$ sudo service httpd stop
$ composer update
$ sudo service httpd start
それでも失敗するときは
長いことこれで成功していたのですが、あるときこの手順を踏んでも失敗するようになってしまいました。更新する要素が多いのか、それとも起動しているアプリケーションの問題かわかりませんが、結果的に以下のように対処したところ無事に成功しました。$ sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=2048
$ sudo /sbin/mkswap /var/swap.1
$ sudo /sbin/swapon /var/swap.1
前回との違いは、用意するSwapファイルの個数が1,024個から2,048個になっているところ。つまり用意するSwapファイルを1GBから2GBに増やすと。これをやってから
composer update
を実行するようにしたら失敗することはなくなり安定しました。時間は掛かる気がしますけどね。。以上、メモでした。