IT-Q

config/ の設定ファイルと .env の関係はどうなっていますか。

env() は config/ の中だけで読み、アプリからは config() 経由で参照します。これを守らないと、本番で config:cache を実行した瞬間に env() が null を返して壊れます。

面接官が見ているのはenv() を直接呼ぶ事故の予防。config:cache の落とし穴の前提。

よくある答えと、面談でどう見られるか

  • config/ の中で env() を読み、アプリのコードからは config() 経由で参照する
    これが原則です。この形なら config:cache を実行しても壊れません。
  • どこからでも env() を直接呼んでよい
    これが定番の事故です。config:cache 後は .env が読み込まれなくなり、env() はシステム環境変数しか返さなくなります(通常そこには無いので null になります)。
  • config/ は使わず .env だけで管理するのが今の書き方
    config/ は現役です。デフォルト値や環境非依存の設定はそちらに書きます。
  • .env は config/ が読み込めなかったときの予備
    逆です。config/ が .env を読みます。

模範解答

.env の値は config/ のファイルの中で env() を使って読み込み、アプリのコードからは config('services.foo.key') のように config() 経由で参照します。

これを守らないと、本番で php artisan config:cache を実行したときに壊れます。設定が1ファイルにまとめられ、以降 .env は読み込まれなくなるためです。

正確には「env() が null を返す」のではなく、公式ドキュメントの記載では「env 関数は外部のシステムレベル環境変数しか返さなくなる」。サーバーにその名前の環境変数が無ければ結果として null になります。「env() は config/ の中でしか使わない」と覚えてください。