PR

Fatal error: Allowed memory size of 1610612736 bytes exhausted の解決法

アイキャッチ画像
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///opt/cpanel/composer/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223

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

エラー発生時

LaravelCollective HTMLをインストールしようと、

composer require laravelcollective/html:^6.0

とコマンドを打ったとき。

原因

割り当てられているメモリ数が必要なメモリ数に足りていない。

クリックするよう指示されているページ(https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors)へ行くと、

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

とコマンドを打って現在のメモリ数を確認するように指示されるので、従うと、

128M

と出ました。
確かに、必要なメモリ数(1610612736 bytes)に足りていません。

解決法

COMPOSER_MEMORY_LIMIT=-1 composer require XXXX/XXXX

とコマンドを打てば解決します。
XXXX/XXXXにはインストールしたいパッケージを入力してください。

【COMPOSER_MEMORY_LIMIT=-1】でメモリ数を無制限にしています。

このように数を指定するとき、-1にすると「全て」「無制限」を指すことも多いです。

ただし、この方法はコマンドを打ったときの一回に限りメモリ数を無制限にしているだけなので、次回なにかのパッケージをインストールするときには適用されていません。

このエラーが出たときには今回紹介した方法で解決できると覚えておけば、すぐに対処できるので問題はないでしょう。

ちなみに、メモリ数を設定しているファイルを書き換える方法もあります。
その方法は下記の記事で解説がされているので、参考にしてください。

Laravel composer ライブラリインストール時のメモリエラー - Qiita

この方法では、今後パッケージをインストールするときに今回のエラーが発生することはないです。

以上、『Fatal error: Allowed memory size of 1610612736 bytes exhausted の解決法』でした。