

お世話になります。  
Vagrantから起動したCentOS上でApacheとXdebugが動いていてそれをVisual Studio CodeとPHP
Debugプラグインでブレークポイントを貼ったりなどのデバッグをしています。  
ここで疑問に思ったのですがVSCode上の設定ファイルにはリモートのホスト名などを設定する項目がありません。

[code]

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "Remote Debug",
          "type": "php",
          "request": "launch",
          "serverSourceRoot": "/var/www/html",
          "localSourceRoot": "${workspaceRoot}",
          "port": 9001
        }
      ]
    }
    
[/code]

このような設定で動いてしまいます。  
しかしこれだけではどこのポート9001に行ったらいいのかもわからないのではないかと思います。  
localhostの9001に行くことが決まっているとかでしたらホスト側とゲスト側のポートフォワーディングの設定がいるでしょうけどどこにもそんな記事は見当たりません。  
これはXdebug自体が何かそういった機能を持っているということなんでしょうか?


CC BY-SA 3.0
2017-07-15T00:12:43.117
36374
2019-01-03T08:01:40.323
14222
question
php vagrant vscode
VSCodeでのXDebugとの連携でホストを指定しなくてもいい理由


自己解答です。

Xdebugが有効になっているとhttpリクエストをサーバーが貰った後に設定(`xdebug.ini`)に従ってDBGPというプロトコルでデバッグに使う通信をしようとします。  
その通信先に関する設定が`xdebug.remote_host`です。また`xdebug.remote_connect_back`はhttpリクエストをしてきたところへ通信をするという設定です。  
なのでホストの情報は当然コードにブレークポイント貼ったりする側には要らなく、逆にサーバー側に書いてあってサーバー側から通信を始めるというように理解しました。

おかしなところがあったらよろしくお願いします。

余談ですがもともとはngrokでローカルに向けていたWebhookの処理をデバッグしたくて今回の質問をさせていただきました。  
この時`xdebug.remote_connect_back`の設定をオンにしていたためDBGPがローカルの環境に向けてつながらなかったことで理解が進みませんでした。


CC BY-SA 3.0
2017-07-16T14:18:51.200
36425
2017-07-16T14:18:51.200
14222
36374
answer