はじめに
こんにちは!エンジニア転職を目指している伊藤です。
最近、Laravelプロジェクトで環境変数が正しく読み込まれない問題に直面しました。
この記事では、その問題の解決方法について説明します。
問題の概要
Laravelで環境変数を.envファイルに設定しているにもかかわらず、これらの値がアプリケーション内で正しく読み込まれませんでした。具体的には、AWS S3にアクセスするためのenv('FILESYSTEM_DISK')
やenv('AWS_ACCESS_KEY_ID')
などの環境変数がnullを返していました。
原因
この問題の原因は、Laravelの設定キャッシュファイルbootstrap/cache/config.php
が存在することでした。このファイルが存在する場合、env()
関数は常にnullを返します。設定キャッシュを有効にしていると、環境変数はキャッシュされた設定ファイルから取得されるため、.env
ファイルの変更が反映されません。
解決方法
1. 設定キャッシュファイルを削除する
まず、以下のコマンドを実行して、bootstrap/cache/config.php
ファイルを削除します。
sudo rm -f /path/to/your/laravel/project/bootstrap/cache/config.php
2. キャッシュをクリアする
以下のコマンドを実行して、config のキャッシュをクリアします。
php artisan config:clear
3. 環境変数を確認する
最後に、環境変数が正しく読み込まれているかを確認します。以下のコマンドでtinkerシェルを起動し、環境変数の値を確認します。
php artisan tinker
tinkerシェル内で以下のコマンドを実行し、環境変数の値が正しく取得されるか確認します。
※確認したい環境変数を設定してください
env('FILESYSTEM_DISK');
env('AWS_ACCESS_KEY_ID');
最後に
本記事では、Laravelで.envファイルの環境変数が読み込まれない問題の解決方法について説明しました。この問題の原因は設定キャッシュファイルにあり、これを削除することで問題を解決できます。同じ問題に直面している方の手助けになれば幸いです。
参考記事