0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravel Dusk】「.env」「.env.dusk.local」の違い

0
Last updated at Posted at 2026-02-02

結論

Dusk では「別プロセスのブラウザ」からアクセスされても
セッション・キュー・キャッシュが壊れない設定にしている

Dusk では「別プロセスのブラウザ」からアクセスされても
セッション・キュー・キャッシュが壊れない設定にしている

そのために .env と .env.dusk.local を意図的に変えている。

① 一番重要な違い(Dusk必須)

SESSION_DRIVER

環境 設定
通常 SESSION_DRIVER=database
Dusk SESSION_DRIVER=file

超ざっくり解説

Duskは「別の人(ブラウザ)」が操作している。
だから“共有が必要な database”より
“置きっぱなしで誰でも見える file”の方が安全。

たとえ話で説明すると

通常:SESSION_DRIVER=database

・ロッカーを使う感じ

・会社のみんなが使う

・管理しやすい

・ルールが多い

👉 人が普通に使う環境向け
Dusk:SESSION_DRIVER=file

・机の上に紙を置く感じ

・見た瞬間に分かる

・待ち時間なし

・シンプル

👉 自動操作(Dusk)向け

なぜ Dusk だと database がダメ?

Dusk はこう👇

Laravel(PHP)

Chrome(別プロセス)

が 別々に動いてる

Laravel「セッション保存したよ」
Chrome「まだ見えてない…」
→ 419(切れた)

file だと何が違う?

Laravel「ファイルに書いた」
Chrome「そこ見に行く」
→ 常に一致

なぜ?

▪️Dusk は PHPとは別の Chrome プロセス

▪️DBセッションや Redis は 競合・遅延・419の原因になりやすい

▪️file セッションが一番安定

👉 Duskでは file 一択

② DB_DATABASE(必須)

環境 DB
通常 laravel_app
Dusk laravel_app_dusk

なぜ?

▪️テストでデータを破壊する

▪️本番・開発DBを汚さない

▪️DatabaseMigrations 前提

👉 Dusk専用DBは必須設計

③ CACHE / QUEUE(安定性のため)

CACHE

環境 設定
通常 CACHE_STORE=database
Dusk CACHE_STORE=array

超ざっくり解説

Duskでは「記憶を残さないメモ帳」を使う。
通常は「共有メモ帳」を使う。

▪️array = プロセス内完結

▪️キャッシュ残骸でテストが壊れない

QUEUE

環境 設定
通常 QUEUE_CONNECTION=database
Dusk QUEUE_CONNECTION=sync

超ざっくり解説

Duskでは「後でやる」を禁止する。
全部「今すぐやる」。(sync = その場で全部やる)

▪️非同期処理は テストで事故る

▪️Dusk では 即時実行が正義

④ APP_ENV(見分け用)

APP_ENV=dusk

▪️Laravel が Dusk環境だと認識

▪️.env.dusk.local が読まれる

▪️環境分岐が可能

⑤ 変えていないけど重要なもの

APP_URL

APP_URL=https://test.test

▪️Dusk がアクセスするURL

▪️ブラウザが実際に開く場所

▪️HTTPS / ホスト名不一致は即死亡

⑥ Duskで「重要ではない」もの

以下は Duskの成否にはほぼ関係ない:
▪️MAIL_*(logならOK)

▪️AWS_*

▪️REDIS_*(使ってなければ無視)

▪️MEMCACHED_HOST

▪️LOG_*

▪️BCRYPT_ROUNDS

⑦ Debugbar を必ず無効化する(重要)

APP_DEBUG / DEBUGBAR_ENABLED

環境 設定
通常 APP_DEBUG=true
Dusk APP_DEBUG=false
Dusk DEBUGBAR_ENABLED=false

超ざっくり解説

Duskは「本物のブラウザ」を使う。

Debugbarは画面の一番手前に固定表示されるため、
クリック対象の上にかぶさることがある。

→ element click intercepted エラー発生

まとめ:Duskで“使う要素”だけ抜き出すと

Laravel Dusk 必須セット

APP_ENV=dusk
APP_DEBUG=false
DEBUGBAR_ENABLED=false
APP_URL=正しいURL

DB_DATABASE=専用DB

SESSION_DRIVER=file
CACHE_STORE=array
QUEUE_CONNECTION=sync

これが揃っていれば:
▪️419が出ない

▪️セッションが切れない

▪️validation / redirect が安定

▪️Dusk が信用できる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?