PHPでメモリが枯渇すると以下のようなエラーが表示されます。
PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/Cellar/composer/1.10.10/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/Cellar/composer/1.10.10/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223
Laravelのインストール時や重い処理を行った際に出ることが多いです。
このエラーはphp.iniのファイルを編集することで解決することができます。
php.iniの場所を特定する
以下のコマンドでphp.iniファイルの場所を特定します。
$ php -r "phpinfo();" | grep php.ini
結果は↓のように出てくると思います。
$ php -r "phpinfo();" | grep php.ini
Configuration File (php.ini) Path => /usr/local/etc/php/8.1
Loaded Configuration File => /usr/local/etc/php/8.1/php.ini
結果から、`/usr/local/etc/php/8.1/php.ini`にファイルがあるのでこのファイルを編集します。
php.iniのmemory_limitの値を上げる
デフォルトは、128Mだったので多めにみて4GB程度(1024 * 4 = 4096M)を指定します。
ローカルサーバーなので結構大きく設定しましたが、レンタルサーバーの場合は2048Mあたりが適当です。
; Maximum amount of memory a script may consume
; https://php.net/memory-limit
memory_limit =128M
メモリ上限が緩和されたか確認する
最後に編集したphp.iniの内容が反映されたかを確認します。
php.iniファイルを探す感じでコマンドラインで次のコマンドを実行します。
$ php -r "phpinfo();" | grep memory_limit
実行後の結果に先ほど設定したメモリ上限値になっていればOKです。
$ php -r "phpinfo();" | grep memory_limit
memory_limit => 4096M => 4096M