[PHP]Composer使用時に「proc_open(): fork failed errors」エラーが出た時の対処法

カテゴリ: composer

Linux環境でComposerを使用していて「proc_open(): fork failed errors」エラーが出た場合の対処法を説明します。

> composer update

...
PHP Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar

この問題はサーバがメモリ不足になって、しかも使えるSwap領域がないときに発生します。
通常ではあまり発生しませんが、gcpやAWSなどのクラウドサービスでmicroインスタンスで運用しているとき、メモリ不足でこのエラーを見ることがあります。

メモリの使用量を確認する

まずは、本当にメモリの使用状況を確認します。LinuxでメモリやSwap領域の使用状況に関する情報は、free'で確認できます。--mega`オプション付きで実行すると各サイズがMByte単位で表示されます。

> free --mega

total used  free shared buff/cached  available
Mem:  15721 4403   1471        9844      10529
Swap:  7999 4661   3338

Swap領域を有効化する方法

Linux環境においてSwap領域自体がなかった場合、swap領域を作る必要があります。この場合、以下のようなコマンドを実行すればよいです。

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

不要なサービスを一時的に止める

メモリ不足が原因なので、Swapの作成などのシステム全体に影響するコマンドを実行したくない場合は、メモリを一時的に開放することで動作する場合もあります。ApacheやMySQLなどのサービスを同じサーバで実行している場合は、いったんサービスを停止させてからcomposerコマンドを実行し、再度サービスを起動させれば成功することもあります。

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。