XDebugを使ってPHPのデバッグをする際、設定方法には2つある。
- remote_hostをホストPCのIPアドレスに設定する
- 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を設定しないと動かなかった。
理由は不明。
ともあれ、このことに気付くまでにえらく時間掛かってしまった。
必須項目は以下の通り。
- Docker上のXDebugにはremote_hostを設定する。
→ホストPCのIPはipconfigなりifconfigなりで調べる。 - docker-composeする際に、9000番ポートをexposeしておく。
→XDebugはデフォルトで9000番ポートを使うため。 - volumesを設定する。
- Netbeansの場合、実行環境を「ローカルWebサーバー」としておく。
→リモートで動いているように見せかけて「localhost」で動いているため?
Windowsのファイアウォールまで疑って、わざわざ9000番を空けても動かなかったので何で?!と思っていたのですが、こんなところに解決策があったとは。
調べても調べても全然出てこなかったので備忘録として。
あまりこの辺の記述が見当たらない辺り、Dockerをローカル開発環境として使う使い方は変わってるんですかねー。。。
ともあれ、これでようやくHyper-V+DockerでのPHP開発が出来るようになりました。