Laravelインストール時にエラー「Fatal error: Allowed memory size of xxxx bytes exhausted…」発生




Laravelに限ることではありませんがPHPを利用していると「Fatal error: Allowed memory size of xxxx bytes exhausted…」はちょこちょこ遭遇します。
今回はLaravelインストール時に発生する場合の対処についてまとめます。

「Fatal error: Allowed memory size of xxxx bytes exhausted…」とは

簡単に言うとPHPが利用できるメモリの上限を超えてしまった場合に発生するエラーです。
PHPの設定ファイルphp.iniで制御できる値となります。

Laravelインストール時の「Fatal error: Allowed memory size of xxxx bytes exhausted…」エラー

Laravelをコマンドラインでインストールする場合、公式サイト他以下のようなコマンドを実行するという記載が多いと思います。

composer create-project laravel/laravel [app_name]

こちらで実行する場合、Laravelのバージョンがあがるにつれパッケージサイズが大きくなるのでエラーが発生する確率が高くなってきます。

「Fatal error: Allowed memory size of xxxx bytes exhausted…」の対策

エラーが発生した場合の対処方法ですが、主に以下の2パターンで解決できる場合が多いです。

事前準備

今回インストール時にエラーが発生していることを前提としているので、わかりやすくするために以下の解決策を実行する前に「composer create-project]コマンド実行時に作成されたディレクトリを削除してください。
コマンドを実行したディレクトリ直下にapp_nameで指定したディレクトリ名が作成されているのでそれを削除するだけです。

解決策1:PHPのメモリー上限設定を永続的に変更したあとにインストールを実行する

※以下はMacの場合となり、Windowsなどその他OSの場合はphp.iniのパスを調べればあとは同じ設定を行えば対応できます。

手順1:php.iniのメモリ設定を変更する。

まずphp.iniの存在確認を行います。

% php -i | grep php.ini
Configuration File (php.ini) Path => /etc

もしパスが返ってきた場合は存在するので手順2を実行します。
パスが上記のようになっている場合はphp.iniが存在していないので作成します。
作成方法は以下のようにサンプルファイルをコピーします。

sudo cp /etc/php.ini.default /etc/php.ini

次にphp.iniのメモリ設定を変更します。

php -i | grep memory_limit
memory_limit => 512M => 512M

私の環境では512MBで設定されていました。
この値でインストールを再度実行してください。
成功すればこれで完了です。
もし変わらず「Allowed memory size of…」エラーが発生する場合はメモリーサイズを大きくします。

sudo sed -i -e "s/memory_limit = 512M/memory_limit = 1G/" /etc/php.ini

上記memory_limitの数値は環境に合わせて変更してください。
メモリーサイズが最適になればエラーは発生せずにインストールができます。

解決策2:PHPのメモリー上限設定を一時的に変更した状態でインストールを実行する

永続的なメモリー設定変更ではなく、一時的なメモリー設定変更で解決することもできます。
コマンドは以下の通りです。

php -d memory_limit=1G /usr/local/bin/composer create-project laravel/laravel [app_name]

1点気をつけることとして、composerのパスを指定する必要があることです。
コマンド実行直下にcomposer実行ファイルがある場合はパスがなくても動きますが、違うディレクトリに移動していたりする場合は指定する必要があります。

Laravelインストールエラーで作成されたアプリケーションディレクトリを削除しないで再開する方法

composer create-projectはディレクトリが存在するとエラーになります。
一度実行してエラーが発生した場合、作成されたディレクトリを削除してから実行するのがわかりやすいですが、それ以外ではそのディレクトリに移動後、composer installを実行することでも再開できます。
ただし、必要なファイルはすべてダウンロードされている前提になりますのでちょっとわかりずらいため、初心者であれば作成されたディレクトリを削除してからcomposer create-projectコマンドを再度実行することをおすすめします。