composer実行時にAllowed memory size of 1610612736 bytes exhaustedエラーに解決方法

composer実行時にAllowed memory size of 1610612736 bytes exhaustedエラーに解決方法
2021年04月26日2023年10月20日

ローカル環境でインストール済みのパッケージを削除しようとしたらエラーが発生しました。

PHP Fatal error:  Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) 

メモリ関連のエラーなので、composer installでも同様のエラーが発生すると思われます。

発生したエラー

今回不要になったパッケージをcomposerのコマンドを使用して削除しようとしたら、下記のエラーが発生。

$ /usr/local/bin/composer remove barryvdh/laravel-debugbar
/usr/local/bin/composer remove barryvdh/laravel-debugbar
Do not run Composer as root/super user! See https://getcomposer.org/root for details
barryvdh/laravel-debugbar could not be found in require but it is present in require-dev
Do you want to remove it from require-dev [yes]? yes
Dependency "laravel/framework" is also a root requirement, but is not explicitly allowed. Ignoring.
Dependency "laravel/framework" is also a root requirement, but is not explicitly allowed. Ignoring.
Dependency "laravel/framework" is also a root requirement, but is not explicitly allowed. Ignoring.
Loading composer repositories with package information
Warning from https://repo.packagist.org: You are using an outdated version of Composer. Composer 2 is now available and you should upgrade. See https://getcomposer.org/2
Updating dependencies (including require-dev)
PHP Fatal error:  Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.

エラー内容を要約すると、メモリ不足によるエラーとのこと。

PHPの致命的なエラー:許可されたメモリサイズ1610612736バイトが使い果たされました(4096バイトを割り当てようとしました)

対処方法

メモリの上限を無制限にして実行(一番おすすめ)

対処方法として、composerが使用できるメモリを増やす必要があります。下記コマンドはメモリの上限を設けずcomposerを実行することが出来ます。

「COMPOSER_MEMORY_LIMIT=-1」をコマンドの前に付与して実行

// remove
$ COMPOSER_MEMORY_LIMIT=-1 composer remove XXX/XXXXXX
//install
$ COMPOSER_MEMORY_LIMIT=-1 composer require XXX/XXXXXX

php.iniファイルの設定を書き換える

PHPの設定ファイルを直接修正する方法になります。

動作してるアプリ全体に影響が出てしまうのでおすすめではありませんが、コマンド実行時が楽になります。
(ローカルであれば問題ないと思う。)

memory_limit項目を「-1」にしてあげます。

php.ini
$sudo vi /etc/php.ini
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = -1; 

参考

公式にもちゃんと説明がありました。

Composer may sometimes fail on some commands with this message:

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

In this case, the PHP memory_limit should be increased.

Memory limit errors

コメント

コメントを残す

お名前(任意)
コメント:新規