以前、エックスサーバーにデプロイしたLaravelアプリケーションに、新しくパッケージを入れようとしました。
入れようとしたパッケージは「Laravel/Breeze」で、使用したのはおなじみのcomposerです。
出現するエラーは
といった形です。
簡単に言うと、「パッケージを入れようとしたけど、サーバーのメモリ不足で入れられないよ!」という話です。
今回はこの対処法を紹介します。
【Laravel】「Fatal error: Allowed memory size of~」エラーでサーバーにパッケージが入らない対処法
①サーバーのメモリを増やす
足りないなら増やせばいいじゃん!って思うのが普通です。
エックスサーバーの場合、メモリの使用量は管理画面から設定できます。
管理画面のサーバーパネルに入りましょう。
画面下部に、php.ini設定という項目があります。
ここをクリックすると、ドメイン名を選ぶことができます。
選んでスクロールしましょう。
その他の設定欄に「memory_limit」があります。ここを「-1」にするとメモリ制限が無制限になります。
反映までに数分かかるので、待ってみると良いでしょう。
これで反映されれば、Teratermなどのコマンドでメモリ容量を見ることができます。
上のコマンドを打つことで、メモリの確認ができます。
②サーバーの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でダウンロードしてみます。
以下のコマンドを順に実行すると、環境にダウンロードができます。
1 2 3 4 |
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" |
「Composer (version 2.x.x) successfully installed~」みたいなメッセージが表示されれば無事にインストールされています。
ダウンロードが完了すると、サーバー内に「composer.phar」というファイルが作られます。
このファイルがComposerの設定ファイルです。
さて、エックスサーバーのファイルマネージャーを開きます。
ファイルマネージャーは「管理トップページ」→「ファイル管理」から起動できます。
ファイルマネージャーを起動したら、binファイルを開きます(ない場合は作成してください)
その中に「Composer.phar」ファイルを「Composer」とリネームして移動させます。
コマンドで移動させる場合は、以下のコマンドを利用してください。
1 2 |
$ mkdir -p $HOME/bin $ mv composer.phar $HOME/bin/composer |
移動後は「.bashrc」ファイルを編集します。
ファイルを開いて「export PATH=$HOME/bin:$PATH」を追加してください。
これで準備は完了しましたので、最後にコマンドでパスを通します。
コマンドは
1 |
$ source ~/.bashrc |
でOKです。これでパスが通ります。
それではバージョンを確認してみましょう。
バージョン確認のコマンドは
1 |
$ composer --version |
で行えます。
Verが2以上になっていればOKです!
この状態でLaravel/Breezeを導入すると、普通に入れられました!
Composerはさまざまなアプリケーションで利用するので、ぜひともアップデートしておきたいですね。