Tech Starlog

Laravel .env 管理

投稿日:2026/01/29

Laravel開発でよくあるトラブルのひとつが、

  • 「ローカルでは動くのに、本番で動かない」
  • 「デプロイしたら突然エラーが出た」

といった 環境差分による不具合 です。

その多くは、.env ファイルの管理ミスが原因です。

本記事では、Laravelで環境差分トラブルを防ぐための .env 管理 を、
実務でよくある失敗例とともに解説します。


.env ファイルとは?

.env は、環境ごとに異なる設定値を管理するためのファイル です。

例:

APP_ENV=local
APP_DEBUG=true

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=secret
  • ローカル
  • ステージング
  • 本番

これらの環境で 値が変わるもの を定義します。


なぜ .env 管理が重要なのか?

.env 管理を誤ると、次のような問題が発生します。

  • 本番で APP_DEBUG=true のまま
  • DB接続先がローカルのまま
  • APIキーが未設定でエラー
  • キャッシュ有効化後に設定が反映されない

特に 本番環境の障害や情報漏洩 に直結するため、正しい運用が必須です。


.env はGit管理しない

❌ やってはいけない例

git add .env
git commit -m "add env"

.env には以下のような 機密情報 が含まれます。

  • DBパスワード
  • APIキー
  • SMTP認証情報

✅ 正しい運用

.gitignore.env を含めます。

.env

.env.example を必ず用意する

実務では .env雛形ファイル を用意します。

APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true

DB_CONNECTION=mysql
DB_HOST=
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

メリット

  • 新メンバーが迷わない
  • 環境構築がスムーズ
  • 必要な変数の抜け漏れ防止

③ 環境ごとに値を分ける

よくある環境構成

環境 APP_ENV
ローカル local
ステージング staging
本番 production

本番環境の注意点

APP_ENV=production
APP_DEBUG=false

APP_DEBUG=true のままだと、

  • エラーメッセージにパス情報が表示される
  • セキュリティリスクが高い

④ config() 経由で値を使う

❌ よくあるNG例

$apiKey = env('API_KEY');

✅ 正しい使い方

config/*.php に定義します。

// config/services.php
return [
    'example' => [
        'api_key' => env('API_KEY'),
    ],
];
$apiKey = config('services.example.api_key');

理由

  • config:cache 実行後も安全
  • 設定の一元管理ができる

config:cache を理解する

本番では、設定キャッシュを有効にすることが多いです。

php artisan config:cache

注意点

  • env() はキャッシュ後に直接使えない
  • .env を変更したら再実行が必要
php artisan config:clear
php artisan config:cache

⑥ ハードコーディングを避ける

❌ NG例

$timeout = 30;

✅ 改善例

API_TIMEOUT=30
$timeout = config('services.example.timeout');

環境によって値を変えられるようにしておくことで、 本番だけ設定を変える といった対応が可能になります。


よくあるトラブルと原因

ローカルでは動くが本番で動かない

  • .env に必要な変数がない
  • config:cache 後に変更している

.env を変更したのに反映されない

php artisan config:clear
php artisan config:cache

を忘れている可能性があります。


おすすめ運用まとめ

  • .env はGit管理しない
  • .env.example を必ず用意する
  • 本番では APP_DEBUG=false
  • env() は config ファイルでのみ使用
  • config:cache の挙動を理解する