この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:guest
更新日時:2026-06-11 07:12:00

タイトル: Dotenv values containing spaces must be surrounded by quotes.
SEOタイトル: Laravel「Dotenv values containing spaces must be surrounded

この記事の要点
  • Laravel の Dotenv values containing spaces must be surrounded by quotes
  • 原因: .env ファイルで値にスペースを含めているがクォートで囲っていない
  • 対処: APP_NAME="My App" のようにダブルクォートで囲む
  • 変更後は php artisan config:clear でキャッシュをクリア
  • スペース以外にも #(コメント開始)/ $(変数展開)/ 改行に注意

エラー内容

Laravel アプリを起動・実行時(php artisan serve や Web リクエスト時)に以下が発生:

RuntimeException
  Dotenv values containing spaces must be surrounded by quotes.

  at vendor/vlucas/phpdotenv/src/Loader/Parser.php:nnn

原因

.env ファイルで値にスペースを含むテキストをクォートなしで書いているのが原因:

# ❌ NG: スペースを含むのにクォートが無い
APP_NAME=My Awesome App
MAIL_FROM_NAME=Customer Support

# ❌ NG: クォートのバランスが崩れている
APP_NAME="My App

# ❌ NG: シングルクォートとダブルクォートの混在
APP_NAME='My App"

対処

スペースを含む値はダブルクォートで囲む:

# ✅ OK: ダブルクォートで囲む
APP_NAME="My Awesome App"
MAIL_FROM_NAME="Customer Support"
APP_TIMEZONE="Asia/Tokyo"
APP_DESCRIPTION="サービスの説明文 ← 日本語スペースなくても安全のためクォート推奨"

# ✅ OK: スペースが無い値はクォート不要
APP_ENV=production
APP_DEBUG=false
DB_HOST=127.0.0.1

変更後は config:clear

.env はキャッシュされるため、修正後はキャッシュをクリアします:

php artisan config:clear

# 全部消したいとき
php artisan optimize:clear

# 本番では逆に config:cache でキャッシュを再生成
php artisan config:cache

シングルクォート vs ダブルクォート

ダブルクォート ""シングルクォート ''
変数展開${APP_NAME} が展開される× リテラル文字列
エスケープ\n\" が有効すべてそのまま
用途動的な値、他の変数を含む固定文字列、パスワード等
# 変数展開の例
APP_URL=https://example.com
APP_ASSET_URL="${APP_URL}/assets"  # → https://example.com/assets
# シングルクォートだと展開されない
APP_BAD='${APP_URL}/assets'        # → ${APP_URL}/assets (リテラル)

クォートが必要なケース

  • スペース: APP_NAME="My App"
  • # (コメント記号): PASSWORD="abc#123"(クォートなしだと abc までしか読まれない)
  • $ (変数展開): 展開させたくない場合は' を使う
  • =(イコール): DB_PASSWORD="a=b=c"
  • 日本語: 一般的には不要だが、文字化け対策で囲むのが無難

複数行・改行を含めたい場合

.env での改行サポートはバージョン依存。Laravel 8 以降は " 内での改行を改行として扱う:

# Laravel 8+ で動作(.env 内に直接改行)
PRIVATE_KEY="-----BEGIN PRIVATE KEY-----
MIIE...
-----END PRIVATE KEY-----"

# 互換性重視: 改行を \n でエスケープ
PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIIE...\n-----END PRIVATE KEY-----"

config('xxx') 経由で取得

.env 値を直接 env('APP_NAME') で取らずに、config/app.php 経由で config('app.name') を使うのが Laravel 流:

// config/app.php
'name' => env('APP_NAME', 'Laravel'),  // .env が無いとデフォルト

// 各所で
config('app.name');         // 推奨
env('APP_NAME');            // 非推奨(config 外では空になる場合あり)

本番環境で php artisan config:cache を実行すると env()config 外では null を返すようになります(仕様)。config 経由が安全。

関連エラー

  • "Failed to parse dotenv file" — 構文エラー全般。クォートのバランス・改行コードを確認
  • "Encryption key (APP_KEY) not specified"APP_KEY= が空 → php artisan key:generate
  • 「設定値が反映されない」 — config キャッシュ → php artisan config:clear
  • ".env のキー名に小文字が混在」 — Dotenv は大文字のみを推奨(小文字キーは警告またはエラー)

予防

  • .env.example を必ずバージョン管理して、新メンバーがコピー → 設定変更だけで動かせるように
  • .env.gitignore に必ず登録(機密情報のため)
  • 本番デプロイ時は CI/CD で .env を安全に注入(GitHub Actions Secrets / AWS SSM 等)
  • パスワードに #(シャープ)を含めないのが安全(バリデーション側に制約をかける)