🐙

Laravel SailでXdebugを有効にする

2022/10/28に公開

前提

  • Windows10以上
  • WSL2有効

概要

ほぼ公式に書いてある!Laravel Sail便利ですね✨
https://readouble.com/laravel/9.x/ja/sail.html#debugging-with-xdebug

公式を補足しつつ最初から丁寧に設定手順

  1. Visual Studio Code (略称VSCode)をインストール
  2. VSCodeの拡張機能 Remote Developmentをインストール
  3. 開発するディレクトリでcode .でwslリモート接続状態でVSCodeを開く
  4. 拡張機能PHP Debugをインストール
  5. sail downでコンテナを落としておきます。
  6. .envに以下を追記
.env
SAIL_XDEBUG_MODE=develop,debug,coverage
  1. launch.jsonを作成

    もちろんPHPで構成
  2. 作成した.vscode/launch.jsonを調整
launch.json
{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Sail Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
                "/var/www/html": "${workspaceFolder}"
            },
            "hostname": "localhost",
            "ignore": [
                "**/vendor/**/*.php"
            ],
            "xdebugSettings": {
                "max_data": 65536,
                "show_hidden": 1,
                "max_children": 100,
                "max_depth": 3
            }
        }
    ]
}

"ignore""xdebugSettings"は必須ではないはず。お好みで外すなど調整してください。

  1. sail up -dでコンテナを起動
  2. 公式(日本語)のXdebug ブラウザ使用法に沿ってブラウザの拡張機能をインストール

Webブラウザでアプリケーションを操作しながらデバッグするには、WebブラウザからXdebugセッションを開始するためのXdebugが提供する手順に従ってください。

Chromeブラウザなら以下キャプチャの赤線のブラウザ拡張機能をインストール

  1. Chromeの拡張機能をONにする

(念のため補足)
LinuxホストIP設定はデフォルトの最小限の設定なら不要。

動作確認

  1. デバッグ起動
  2. ブレークポイントを付けておく。例としては以下のキャプチャのようなところ
  3. http://localhost/ に一度アクセス
  4. http://localhost/ でブラウザ拡張機能Xdebug helperをDebug有効にする
  5. 再度 http://localhost/ にアクセスして、作成したブレークポイントの処理が実行されるところまで操作する
  6. VSCodeで処理が止まっていることを確認する(例の通りにLaravelインストール直後のデフォルトのブレークポイントならlocalhostにアクセスしたときに止まるはずです)

終わりに

実はlaunch.jsonだけ記述がわからなかったです・・。デフォルトの生成のままだとブレークポイントすり抜けました。Xdebug公式の見落としか、自分で考えろってことかも・・?
というわけで、以下のstackoverflowの記事を参考にさせていただいています。

【launch.json参考】
https://stackoverflow.com/questions/72199650/unable-to-get-xdebug-3-working-with-laravel-sail-docker-and-visual-studio-code

デバッグ環境を整えて、よいLaravel開発を!

Discussion