🐷

Drupal:Vscodeを使った開発環境で、Xdebugが起動しなかった問題

2023/08/22に公開

問題

下記参考サイト
https://www.acquia.com/jp/blog/how-to-use-lando-for-building-drupal-local-environment
こちらを元にLandoを使用したDrupalのローカル開発環境を作成しようとしましたが、Vscode経由のXdebugの接続ができず、また色々なサイトを確認したのですがどの解決方法でも解決できず四苦八苦していました。

エラーログ

[603] Log opened at 2023-06-11 23:34:37.739714
[603] [Step Debug] INFO: Checking for client discovery headers: 'HTTP_X_FORWARDED_FOR,REMOTE_ADDR'.
[603] [Step Debug] INFO: Checking header 'HTTP_X_FORWARDED_FOR'.
[603] [Step Debug] INFO: Checking header 'REMOTE_ADDR'.
[603] [Step Debug] WARN: Could not discover client host through HTTP headers, connecting to configured address/port: 172.22.169.144:9003.
[603] [Step Debug] WARN: Creating socket for '172.22.169.144:9003', poll success, but error: Operation now in progress (29).
[603] [Step Debug] ERR: Could not connect to debugging client. Tried: 172.22.169.144:9003 (fallback through xdebug.client_host/xdebug.client_port).
[603] Log closed at 2023-06-11 23:34:39.473741
<- outputEvent
tS {
  seq: 0,
  type: 'event',
  event: 'output',
  body: {
    category: 'stdout',
    output: 'Listening to Xdebug on port 0.0.0.0:9003,:::9003 ...\n'
  }
}

Listening to Xdebug on port 0.0.0.0:9003,:::9003 ...
<- launchResponse
BE {
  seq: 0,
  type: 'response',
  request_seq: 2,
  command: 'launch',
  success: true
}

環境

Drupal9
Lando3.18
Windows10
WSL2

解決方法

同じ問題にあった人がたくさんいらっしゃったようですが、私の問題はもっと根本的なところで、VScodeの拡張機能のWSLがなかったんですね。これらを有効化すれば解決しました。
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack
同僚にも確認しましたが、みんな当たり前に入れているらしくその為なかなか記述がなかったようです…

その他の解決方法

下記はその他の解決法です。誰かの助けになれば幸いです。

解決方法1:PHPDebugの拡張機能を入れる

参考サイト
https://www.ipride.co.jp/blog/5323
調べて真っ先に出てきたのがこちらですね。他のサイトでもよく紹介されていたので、一番忘れがちなことではないでしょうか。

解決方法2:Xdebug.logを有効化

これは直接の解決方法ではありませんが、上のログを出力させることで何か手掛かりがあるかもしれません。

;参考サイトでは消されているが、これを有効化。また出力先をわかりやすくフォルダ直下にする
; xdebug.log = /tmp/xdebug.log
xdebug.log = ./xdebug.log

解決方法3:Xdebug2もしくは3の設定方法に合わせていない

参考サイト
https://docs.lando.dev/guides/lando-with-vscode.html
実はxdebugのバージョンが2か3かによって、port番号が異なるようです。(2なら9000、3なら9003が使用される)
PHPのバージョンと合わせて確認しましょう。

以上です。ご覧いただきありがとうございました。

Discussion