Visual Studio Code を使って 別の Windows 環境で動作している XAMPP の PHP をリモートデバッグ

別のパソコン上で動作している XAMPP の PHPApache)を、手元の VS Codeデバッグするための手順。理由があって Xdebug は 3系ではなく2.9系を使用する場合の手順。古い設定となるので記録として残しておく。

前提

環境は下記を対象

構成

サーバ側(XAMPP が動作している Windows PC)

  • Apache + PHP (XAMPP)
  • Xdebug 拡張モジュールをインストールし設定

クライアント側(VSCode が動作している PC)

手順

サーバ側(XAMPP が動作している Windows PC)

  • Xdebug をインストール
  • 古いバージョンなので下記から
  • ダウンロードした dll ファイルを C:\xampp\php\ext\ に格納
    • パスは XAMPP のインストール場所によって異なる
  • php.ini に以下を追加(Xdebug 2.9系向けの設定)
zend_extension="C:\xampp\php\ext\dll ファイル名"

[Xdebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_port = 9000
xdebug.remote_connect_back = 1
xdebug.idekey = VSCODE
xdebug.remote_handler = dbgp
xdebug.remote_mode = req

クライアント側(VSCode が動作している PC)

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for Xdebug 2.9",
      "type": "php",
      "request": "launch",
      "port": 9000,
      "pathMappings": {
          "サーバ側のパス、例えば C:\\xampp": "${workspaceFolder}"
      }
    }
  ]
}

補足

  • xdebug.remote_connect_back は接続してきた元に Xdebug が接続しに行く。複数人で debug する場合はこちら。ほかの接続もデバッグ対象にする場合は xdebug.remote_host を使用する
  • デバッグの仕組みとしてはサーバ側からクライアント側に指定したポート番号に接続がされる。つまり通信の方向は サーバ側→クライアント側 となる。そのためクライアント側で所定のポートに対する接続を受け付けるようにファイアウォールの設定が必要。