【XServer】Composerを実行したらPHPのメモリエラーが出たでござる

Laravel
スポンサーリンク

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 をする際は上記を覚えておくことをおすすめします。

コメント

タイトルとURLをコピーしました