DockerでXDebug使ってPHPデバッグする際はremote_connect_backが使えない

More than 1 year has passed since last update.

XDebugを使ってPHPのデバッグをする際、設定方法には2つある。

  1. remote_hostをホストPCのIPアドレスに設定する
  2. remote_connect_backをtrueにする

remote_connect_backを使えばホストPCのIPを入力せずとも、ホストPCとの連携が簡単に出来る。

If enabled, the xdebug.remote_host setting is ignored and Xdebug will try to connect to the client that made the HTTP request.
https://xdebug.org/docs/all_settings#remote_connect_back

ところが、Docker上にインストールしたXDebugとの連携の場合は、こうはいかないらしく、remote_hostを設定しないと動かなかった。
理由は不明。
ともあれ、このことに気付くまでにえらく時間掛かってしまった。

必須項目は以下の通り。

  1. Docker上のXDebugにはremote_hostを設定する。
     →ホストPCのIPはipconfigなりifconfigなりで調べる。
  2. docker-composeする際に、9000番ポートをexposeしておく。
     →XDebugはデフォルトで9000番ポートを使うため。
  3. volumesを設定する。
  4. Netbeansの場合、実行環境を「ローカルWebサーバー」としておく。
     →リモートで動いているように見せかけて「localhost」で動いているため?

Windowsのファイアウォールまで疑って、わざわざ9000番を空けても動かなかったので何で?!と思っていたのですが、こんなところに解決策があったとは。
調べても調べても全然出てこなかったので備忘録として。

あまりこの辺の記述が見当たらない辺り、Dockerをローカル開発環境として使う使い方は変わってるんですかねー。。。
ともあれ、これでようやくHyper-V+DockerでのPHP開発が出来るようになりました。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.