はじめに
Laravel
で、.env
にSOME_WORD
が存在するのにかかわらず、env('SOME_WORD')
やgetenv('SOME_WORD')
で環境変数が読めない現象が発生し、解決に時間を要してしまったので、備忘録的に残しました。
現象について
.env
にSOME_WORD
が定義しておりましが、その変数が読めない事象に遭遇しました。
env('SOME_WORD')
を実行すると NULL
、getenv('SOME_WORD')
を実行するとfalse
がリターンする現象です。
解決方法について
Stack Overflow
では、環境変数の定義にSOME_WORD=SOME WORD
のようにスペースが含まれていると失敗するため、SOME_WORD="SOME WORD"
とダブルクォート(")で括ることで解決できるといった事例が多かったのですが、そちらに該当しませんでした。
他の解決方法として、下記コマンドを実行することで解決できるといった記載がありましたので、実行してみました。
# php artisan config:clear
# php artisan cache:clear
ここで、php artisan cache:clear
を実行するとFailed to clear cache. Make sure you have the appropriate permissions.
というエラーが発生しました。
更に調査したところmkdir -p storage/framework/cache/data
を実行すると解決できるという記載がありましたので、そのコマンドを実行後、改めてphp artisan cache:clear
を実行し、正常にコマンドが終了しました。
さて、問題の環境変数が読めない件ですが、上記を実施することで、正常に環境変数が読み込めるようになりました。