| この記事の要点 |
|
エラー内容
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 等)
- パスワードに #(シャープ)を含めないのが安全(バリデーション側に制約をかける)
子ページ
子ページはありません
同階層のページ
- SQLSTATE[HY000] [1045] Access denied for user 'homestead'@'localhost'
- Add [~] to fillable property to allow mass assignment on [App\~].
- PHP Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in ~
- Changing columns for table "~" requires Doctrine DBAL; install "doctrine/dbal"
- MethodNotAllowedHttpException No message
- Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found
- production.ERROR: No application encryption key has been specified.
- Dotenv values containing spaces must be surrounded by quotes.
- Laravel \ Socialite \ Two \ InvalidStateException
- The page has expired due to inactivity. Please refresh and try again.
- Failed to clone https://github.com/symfony/thanks.git via https, ssh protocol
- Illegal offset type
- Cannot access protected property Illuminate\Http\Request::$...
- Emitted value instead of an instance of Error
- 画像保存時にInternal Server Error
- Failed to authenticate on SMTP server with username ...
- PostTooLargeException
- Database hosts array is empty.
- Invalid request (Unsupported SSL request)
- does not comply with psr-4 autoloading standard. Skipping.
- MySQLのSTR_TO_DATE関数を使用するとnullが返却される問題
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38