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の挙動を理解する