[PHP]Composerで「Allowed memory size of x bytes exhausted」エラーが出たときにすること

カテゴリ: composer

PHPでComposerを使っていると、Allowed memory size of XXXXXX bytes exhaustedエラーが発生する場合があります。
本記事では、メモリ不足になったときの対象を説明します。

メモリ不足エラー時のエラーメッセージ例

以下が、メモリ不足が発生したときのエラー出力例です。

> compser update

...
PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted

Composerは内部的に多くのメモリを使用する場合があるため、PHPのインタプリタが使用できるメモリ量を増やす必要があります。このような場合は、phpのmemory_limit設定値を増やす必要があります。

memory_limitの確認,変更方法

実行環境でのmemory_limit設定値は、ini_get()関数で確認できます。コマンドラインからチェックする場合は、下記のように入力してみてください。

php -r "echo ini_get('memory_limit').PHP_EOL;"

128M

出力された使用可能メモリが少ない場合は、php.iniファイルにあるmemory_limitの設定値を修正してください。-1を指定すると指定すると制限なしになるので、問題の切り分けをしたい場合は一度-1にして確認するとよいです。

# php.iniファイルの定義

; Use -1 for unlimited or define an explicit value like 512M
memory_limit = -1

設定を変更したら再度ini_get()を実行し、設定内容が反映されているか確認してください。

composerをwebの管理ツールから実行している場合は、設定を反映させるためにWebサーバやphp-fpmの再起動が必要になる可能性があります。

php.iniの場所は、Debian系Linuxの場合は/etc/php5/cli/php.ini,Windowsの場合は、c:\php\php.iniに設置されていることが多いです。

php.iniを変更せずに、Composer実行のみメモリ使用上限を変更する

システムの設定を変えずに、Composerを実行時のみ設定値を変えたい場合は、以下のように-dオプションで指定することもできます。

php -d memory_limit=-1 composer.phar

cPanel使用時のメモリ制限を回避する

サーバ管理ソフトのcPanelを使用しているときに、メモリ不足の問題が起きる場合もあります。
この場合はcPanelのWebサイトでfork bombに関するドキュメントを参考にしてください。


Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

コメントを残す

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