🗂

Laravel .env ファイル

に公開

Laravel プロジェクトの .env ファイルで設定できる項目を、実際の使用例とともに今後すぐに見直せるようにまとめました。
開発環境・本番環境の使い分けや、各設定項目がどのようにアプリケーションの動作に影響するかも整理しています。

環境構築や運用時のリファレンスとして活用できる内容になっています。
この記事は自分の学習用にまとめていますが、同じように環境設定で悩む方の参考になれば幸いです。

基本アプリケーション設定

APP_NAME=StayConnect-API-Laravel
APP_ENV=local
APP_KEY=xxxxxxxxxxxxxxxxxx
APP_DEBUG=true
APP_URL=http://localhost
項目 説明
APP_NAME アプリケーション名。ログやメール送信者名に使用。
APP_ENV 実行環境(local, production, staging など)。
APP_KEY 暗号化キー。php artisan key:generate で生成。
APP_DEBUG エラー詳細表示(開発では true、本番は必ず false)。
APP_URL アプリのベースURL。URL生成やメールリンクに使用。

ロケール・言語設定

APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
項目 説明
APP_LOCALE デフォルト言語(ja で日本語など)。
APP_FALLBACK_LOCALE ロケール未設定時の代替言語。
APP_FAKER_LOCALE ダミーデータ(Faker)の言語。

メンテナンス・セキュリティ設定

APP_MAINTENANCE_DRIVER=file
PHP_CLI_SERVER_WORKERS=4
BCRYPT_ROUNDS=12
項目 説明
APP_MAINTENANCE_DRIVER メンテナンス状態管理。通常は file
PHP_CLI_SERVER_WORKERS PHP組み込みサーバーワーカー数(開発時のみ使用)。
BCRYPT_ROUNDS パスワードハッシュ強度(デフォルト12、本番で強化するなら14など)。

ログ設定

LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
項目 説明
LOG_CHANNEL 使用するログチャンネル。stack は複数出力可能。
LOG_STACK stack の中で実際に使うチャネル(single は1ファイルに出力)。
LOG_DEPRECATIONS_CHANNEL 非推奨メッセージの出力先。通常は無効化。
LOG_LEVEL ログの詳細度(debug, info, warning, error など)。

データベース接続設定

DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=postgres
DB_PASSWORD=password
項目 説明
DB_CONNECTION 使用するDB種別(pgsql, mysql など)。
DB_HOST データベースのホスト(Dockerならサービス名)。
DB_PORT データベースポート番号(PostgreSQLは5432)。
DB_DATABASE データベース名。
DB_USERNAME データベース接続ユーザー名。
DB_PASSWORD データベース接続パスワード。

セッション管理

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
項目 説明
SESSION_DRIVER セッション保存先(file, database, redis など)。
SESSION_LIFETIME セッション有効期限(分単位)。
SESSION_ENCRYPT セッションデータの暗号化有無(本番は true 推奨)。
SESSION_PATH セッションCookieが有効なパス。通常は /
SESSION_DOMAIN セッションCookieが有効なドメイン。

キュー・キャッシュ・ファイルシステム

BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database
項目 説明
BROADCAST_CONNECTION イベントブロードキャスト設定。
FILESYSTEM_DISK ファイル保存先(local, s3 など)。
QUEUE_CONNECTION キュードライバー設定(通常は database)。
CACHE_STORE キャッシュドライバー設定。

メール送信設定

MAIL_MAILER=log
MAIL_SCHEME=null
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
項目 説明
MAIL_MAILER メール送信方法。log はメール送らずログに出力(開発用)。
MAIL_SCHEME 通信方式(通常未使用)。
MAIL_HOST SMTPサーバーのホスト名。
MAIL_PORT SMTPポート番号。
MAIL_USERNAME メール送信用ユーザー名。
MAIL_PASSWORD メール送信用パスワード。
MAIL_FROM_ADDRESS メール送信元アドレス。
MAIL_FROM_NAME メール送信元名(${APP_NAME} が利用される)。

Vite 環境変数

VITE_APP_NAME="${APP_NAME}"
  • フロントエンド(Vite)でアプリ名を利用するための設定です。
  • 使用例:
console.log(import.meta.env.VITE_APP_NAME);

本番環境へのデプロイ時に見直すべきポイント

アプリを本番環境にデプロイする際は、開発環境とは異なる観点でセキュリティや安定性を重視した設定が必要です。
以下のポイントを確認し、適切な .env 設定に変更しましょう。

APP_ENV=production
APP_DEBUG=false
APP_URL=https://api.stayconnect.com
APP_KEY=base64:xxxxxx(本番で再生成)

LOG_CHANNEL=stack
LOG_STACK=daily
LOG_LEVEL=error

SESSION_ENCRYPT=true

DB_HOST=prod-db-host.example.com
DB_DATABASE=stayconnect_prod
DB_USERNAME=prod_user
DB_PASSWORD=strong_secure_password

MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=your_smtp_user
MAIL_PASSWORD=your_smtp_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=no-reply@stayconnect.com
MAIL_FROM_NAME="StayConnect"

アプリケーション基本設定の変更

  • APP_ENV=production
  • APP_DEBUG=false(情報漏洩防止)
  • APP_KEYは本番環境で再生成
    ログ設定の見直し
  • LOG_STACK=daily(ログファイルを日別に分割し、管理しやすくする)
  • LOG_LEVEL=error(エラーのみ記録し、ログ量と負荷を抑制)
  • 必要に応じて Slack などへの通知連携も検討
    データベース接続の変更
  • 開発用と本番用で DB 接続情報を完全に分離
  • 強固なユーザー名・パスワードを使用
    メール送信設定の本番化
  • 実際の SMTP サーバーを利用
  • 通信は TLS で暗号化
  • 送信元アドレスや名前は本番用に適切に変更

まとめ

今後、環境構築や本番デプロイの際にこの内容を見直して、確実に適切な設定が行えるようにしたいと思います。
必要に応じて内容は随時アップデートしていきます。

注意事項

この記事は Laravel のデフォルト構成 を前提にまとめています。
プロジェクトによっては変数名がカスタマイズされていることもあるので、ご注意ください。

たとえば、config/app.php で環境変数の参照が変わっている場合、この記事の内容とこの記事の内容と違っているかもしれません。
実際にどの変数が使われているかは、設定ファイルをサッと覗いてみるのがおすすめです。

// 例: config/app.php
'debug' => env('APP_DEBUG', false),

上記のように env() で指定されている環境変数名が異なる場合は、そのプロジェクトに合わせた変数を使用してください。

Discussion