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

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

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

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

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

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

①エックスサーバーのメモリを増やす

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

画面下部に、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はさまざまなアプリケーションで利用するので、ぜひともアップデートしておきたいですね。