[VSCode][PHP][Docker] コンテナ内で xdebug も入れたし php.ini の設定もしたのにそれでもブレークポイントで止まってくれなくてリモートデバッグできなくなった

2023/04/30

結論

(単なる一時例なので、ビンゴじゃなかったらごめんなさいっ)

  • VScode 側 launch.json の pathMappings 設定が間違ってました。
    • ${workspaceFolder} → ブレークポイントで止まってくれない
    • ${workspaceRoot} → ブレークポイントで止まってくれる
  • 9003 port のポートフォワーディング設定を追加した
    • とりあえず VSCode の画面右下辺りにある PORTS で9003を追加。

経緯

以前はうまく動いていてくれたんだけれど、最近止まってくれなくなってしまい、結構悩んだのでメモ。

Docker コンテナ作り直したりいろいろしても変わらず…。

意外なところに原因がありましたとさ。(基本事項な気がするんだけれど、なぜこうなっていたかは謎…)

php.ini 周りの設定で、

xdebug.log=/dev/stdout

もしくは

xdebug.log=/tmp/xdebug.log

としてログを出力するようにしておくと、多少手がかりがつかめてよさげ。

今回の例だと、以下のログから、「とにかく9003ポートからなにも反応が無い…」というのが分かって、ポートフォワーディングを追加してみた、と言う流れ。

[1283] Log opened at 2024-04-10 06:09:24.763847
[1283] [Step Debug] INFO: Checking remote connect back address.
[1283] [Step Debug] INFO: Checking header 'HTTP_X_FORWARDED_FOR'.
[1283] [Step Debug] INFO: Checking header 'REMOTE_ADDR'.
[1283] [Step Debug] WARN: Could not discover client host through HTTP headers, connecting to configured address/port: host.docker.internal:9003. :-|
[1283] [Step Debug] WARN: Creating socket for 'host.docker.internal:9003', poll success, but error: Operation now in progress (29).
[1283] [Step Debug] ERR: Could not connect to debugging client. Tried: host.docker.internal:9003 (fallback through xdebug.client_host/xdebug.client_port) :-(