🐙
Laravel SailでXdebugを有効にする
前提
- Windows10以上
- WSL2有効
概要
ほぼ公式に書いてある!Laravel Sail便利ですね✨
公式を補足しつつ最初から丁寧に設定手順
- Visual Studio Code (略称VSCode)をインストール
- VSCodeの拡張機能 Remote Developmentをインストール
- 開発するディレクトリで
code .
でwslリモート接続状態でVSCodeを開く - 拡張機能PHP Debugをインストール
-
sail down
でコンテナを落としておきます。 -
.env
に以下を追記
.env
SAIL_XDEBUG_MODE=develop,debug,coverage
- launch.jsonを作成
もちろんPHPで構成
- 作成した.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"
は必須ではないはず。お好みで外すなど調整してください。
-
sail up -d
でコンテナを起動 - 公式(日本語)のXdebug ブラウザ使用法に沿ってブラウザの拡張機能をインストール
Webブラウザでアプリケーションを操作しながらデバッグするには、WebブラウザからXdebugセッションを開始するためのXdebugが提供する手順に従ってください。
Chromeブラウザなら以下キャプチャの赤線のブラウザ拡張機能をインストール
- Chromeの拡張機能をONにする
(念のため補足)
LinuxホストIP設定はデフォルトの最小限の設定なら不要。
動作確認
- デバッグ起動
- ブレークポイントを付けておく。例としては以下のキャプチャのようなところ
- http://localhost/ に一度アクセス
-
http://localhost/ でブラウザ拡張機能Xdebug helperをDebug有効にする
- 再度 http://localhost/ にアクセスして、作成したブレークポイントの処理が実行されるところまで操作する
- VSCodeで処理が止まっていることを確認する(例の通りにLaravelインストール直後のデフォルトのブレークポイントならlocalhostにアクセスしたときに止まるはずです)
終わりに
実はlaunch.jsonだけ記述がわからなかったです・・。デフォルトの生成のままだとブレークポイントすり抜けました。Xdebug公式の見落としか、自分で考えろってことかも・・?
というわけで、以下のstackoverflowの記事を参考にさせていただいています。
【launch.json参考】
デバッグ環境を整えて、よいLaravel開発を!
Discussion