【Laravel】「Fatal error: Allowed memory size of~」エラーでサーバーにパッケージが入らない対処法

  • 2021年11月28日
  • 2023年5月11日
  • Laravel

以前、エックスサーバーにデプロイしたLaravelアプリケーションに、新しくパッケージを入れようとしました。

入れようとしたパッケージは「Laravel/Breeze」で、使用したのはおなじみのcomposerです。
出現するエラーは

Fatal error: Allowed memory size of xxx bytes exhausted (tried to allocate yyy bytes) in ディレクトリ on line zzz

といった形です。

簡単に言うと、「パッケージを入れようとしたけど、サーバーのメモリ不足で入れられないよ!」という話です。
今回はこの対処法を紹介します。

【Laravel】「Fatal error: Allowed memory size of~」エラーでサーバーにパッケージが入らない対処法

①サーバーのメモリを増やす

足りないなら増やせばいいじゃん!って思うのが普通です。
エックスサーバーの場合、メモリの使用量は管理画面から設定できます。

管理画面のサーバーパネルに入りましょう。

画面下部に、php.ini設定という項目があります。
ここをクリックすると、ドメイン名を選ぶことができます。
選んでスクロールしましょう。

その他の設定欄に「memory_limit」があります。ここを「-1」にするとメモリ制限が無制限になります。
反映までに数分かかるので、待ってみると良いでしょう。
これで反映されれば、Teratermなどのコマンドでメモリ容量を見ることができます。

php -r “echo ini_get(‘memory_limit’).PHP_EOL;”

上のコマンドを打つことで、メモリの確認ができます。

②サーバーのComposerのバージョンをアップグレードする

私の場合は上記では解決しませんでした。どれだけサーバーパネルを弄っても、メモリの容量は変わりませんでしたね。
そこでもう少し調べてみると、以下のサイトを見つけました。

https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors

Composerに関するトラブルシューティングですね。
まず真っ先に、Composerのバージョンアップをするように、とあります。

ComposerがVer2になると、使用するメモリ量がそもそも減るようです。
エックスサーバーにはComposerが入っているのですが、バージョンは1のままです。

これをアップグレードします。
一概にComposerのアップグレードは「composer self-update」コマンドで実行できます。

ですが私の場合はこれも「Command “self-update” is not defined.」というエラーで実行できませんでした。

そこで、新しくComposerをダウンロードして、パスを繋ぐ方法を実行します。
Composerのダウンロード方法は公式サイトにも乗っています。

今回はこれを利用して、TeraTermでダウンロードしてみます。

https://getcomposer.org/download/

以下のコマンドを順に実行すると、環境にダウンロードができます。

「Composer (version 2.x.x) successfully installed~」みたいなメッセージが表示されれば無事にインストールされています。

ダウンロードが完了すると、サーバー内に「composer.phar」というファイルが作られます。
このファイルがComposerの設定ファイルです。

さて、エックスサーバーのファイルマネージャーを開きます。
ファイルマネージャーは「管理トップページ」→「ファイル管理」から起動できます。

ファイルマネージャーを起動したら、binファイルを開きます(ない場合は作成してください)

その中に「Composer.phar」ファイルを「Composer」とリネームして移動させます。
コマンドで移動させる場合は、以下のコマンドを利用してください。

移動後は「.bashrc」ファイルを編集します。
ファイルを開いて「export PATH=$HOME/bin:$PATH」を追加してください。

これで準備は完了しましたので、最後にコマンドでパスを通します。
コマンドは

でOKです。これでパスが通ります。
それではバージョンを確認してみましょう。
バージョン確認のコマンドは

で行えます。
Verが2以上になっていればOKです!

この状態でLaravel/Breezeを導入すると、普通に入れられました!
Composerはさまざまなアプリケーションで利用するので、ぜひともアップデートしておきたいですね。