VSCodeでphpのdebugをするならこの設定

PHP

この記事は以下の環境向けです。
画面を動かしている際のdebugはネットに転がっている設定でできていましたが
phpunitを実行している際にdebugが効かなかったので、四苦八苦しました。

  • Windows11
  • WSL2 – Ubuntu
  • PHP 8.2
  • Laravel Sail
  • Xdebug 3系

php.iniを編集できるようにする

wslのプロンプトで下記コマンドを実行します。
コンテナの起動とsailで参照するコンテキストの固定です。

sail up -d
sail artisan sail:publish

これを実行すると、docker-compose.ymlが書き換わります。

また、dockerディレクトリが作成されてその配下に設定ファイルが配置されています。
これらのファイルは永続化されるので、編集した内容がsail upの際にコンテナに反映されます。

sail:publish を実行しない状態で、コンテナ内のphp.iniをいくら編集しても無意味でした。

php.iniにdebug設定を追記する

viでphp.iniを開いて最下部に[xdebug]~のところを追記します。

vi /docker/8.2/php.ini

[xdebug]
xdebug.mode = debug,develop
xdebug.idekey = VSCODE
xdebug.start_with_request = true
xdebug.discover_client_host = true

php.iniの記述をコンテナに反映する

反映する為には、再ビルドが必要となります。以下のコマンドを実行してください。

sail build --no-cache
sail down
sail up -d

リビルドは結構時間がかかりますが、これでphpunitでもデバッグが出来ると思うと
我慢した甲斐があります。

VSCodeでlaunch.jsonを作成

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "stopOnEntry": false,
            "hostname": "localhost",
            "pathMappings": {
                "/var/www/html": "${workspaceFolder}"
            }
        },
    }
}

あとはデバッグ開始ボタンをポチっとするだけです。
お疲れさまでした。