[PHP] composer install が killed で失敗するときの原因と対処

[PHP] composer install が killed で失敗するときの原因と対処

composer insatall が失敗する

PHP のライブラリの依存関係を管理する composer ですが、composer install でインストールをしようとすると killed で失敗してしまうのでその原因を調べました。

ちなみに Laravel の環境を作っている最中でした。

現象

$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed

パッケージをインストールしようとすると上記のような感じで killed で中途半端に終わります。composer install -vvv で詳細な進捗が表示されるので実行して見てみると、順調に進んでいる途中でプチっと途切れてしまいます。

原因

原因はメモリ不足です。

どうも killed で終わるのは Linux がメモリ不足でシステム停止する恐れがあるときに、メモリを多く消費しているプロセスを強制的に殺しているかららしいです。OOM Killer という機能です。

composer install を実行すると、依存関係をいろいろと調整したりするためにデータを読み込んだりするのですが、それが大きくなるとメモリの消費量が大きくなりすぎます。そして限界がきて OS からプロセスが殺されます。

対処法

原因がメモリ不足なのでメモリの割り当てを増やすことで解決できます。

メモリを増やすのが難しければ、スワップ領域を増やしてやればよいです。私はスワップ領域に1GB分割り当てて解決しました。

スワップ領域の増やし方

[Linux] スワップ領域の追加、割り当て方法 │ Web備忘録

上記ページで書いてますが、とりあえず設定用のコマンドだけ以下に示します。

# dd if=/dev/zero of=/var/swap bs=1M count=1024
# mkswap /var/swap
# swapon /var/swap

/var/swap ファイルに 1024MB(1GB)分のファイルを作って割り当てています。これで再実行すれば正常に完了するはずです。

以上。

PHPカテゴリの最新記事