🗂
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