laravel をインストールするために Composer を実行したところ、以下のようなエラーが出力されました。
$ composer install
PHP Fatal error: Allowed memory size of 2097152000 bytes exhausted (tried to allocate 79 bytes) in /usr/share/php/Composer/DependencyResolver/Rule2Literals.php on line 53
Fatal error: Allowed memory size of 2097152000 bytes exhausted (tried to allocate 79 bytes) in /usr/share/php/Composer/DependencyResolver/Rule2Literals.php on line 53
Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.
「メモリを使い果たしたよ」というエラーです。おそらく php.ini の memory_limit が 2GB になっているかもしれません。これでは足りないのか…。どうやって memory_limit を大きくできるでしょうか?
リンク
サーバーパネルから?
Xserver のサーバーパネルには
PHP > PHP.ini設定
という項目があり、そこに memory_limit が存在します。ですが、ここを変更しても意味はありません。
sshでログインしているときのphp.iniはサーバーパネルで設定できるphp.iniとは別だからです。
環境変数を利用する
環境変数を使用することにより、composer のメモリリミッターを外します。
COMPOSER_MEMORY_LIMIT に -1 を設定すると無制限でメモリを使用することができます。実行結果は
$ COMPOSER_MEMORY_LIMIT=-1 composer install
(中略)
INFO Discovering packages.
fideloper/proxy ....................................................... DONE
fruitcake/laravel-cors ................................................ DONE
laravel/sail .......................................................... DONE
laravel/tinker ........................................................ DONE
laravel/ui ............................................................ DONE
laravelcollective/html ................................................ DONE
nesbot/carbon ......................................................... DONE
nunomaduro/collision .................................................. DONE
nunomaduro/termwind ................................................... DONE
spatie/laravel-ignition ............................................... DONE
85 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
これで laravel がインストールされている場所に vendor ディレクトリが生成されます。
まとめ
PHPメモリエラーで Composer が実行できない時は、環境変数 COMPOSER_MEMORY_LIMIT=-1 を設定してから実行する。
Composer はパッケージの依存関係を解決する際に大量のメモリを消費することがあります。composer install や composer update をする際は上記を覚えておくことをおすすめします。
コメント