XDebugでソースレベルデバッグをしたい
実際にプログラムを組み始めると、デバッグをすることになります。自分がコーディングした部分であればprintfデバッグでもなんとかなりますが、やはりソースレベルデバッグができると便利です。
今回は、XDebugを使えるようにしたいと思います。
実行環境は次のようになります。
-
リモート
VartualBoxの仮想マシンに構築したUbuntu Linux 18.04
- Webサーバ
- Apache2
- PHP
- バージョン7.4
-
ローカル
Windows 10
- IDE
- Visual Studio Code
以前環境構築 - Vagrant で LAMP 環境を構築 (1) -でXDebugパッケージをインストールしていますので、設定から始めたいと思います。
まずは、PHPのiniファイルの設定を行います。
/etc/php/7.4/mods-available/xdebug.ini
zend_extension=xdebug.so xdebug.remote_enable = 1 xdebug.remote_autostart = 1 xdebug.remote_host = none xdebug.remote_connect_back = 1 xdebug.remote_port = 9000
1行目はパッケージをインストールした時点で記述されています。
3~7行目を追加します。
次にVisual Studio Codeの設定です。
メニューから[実行]-[構成を開く]を選択します。

Listen for XDebugに対して設定を編集します。
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"pathMappings": {
"/vagrant_data": "${workspaceFolder}",
}
},
11行目は、xdebug.iniのxdebug.remote_portに合わせます。
12~14行目を追加します。
リモートのパス:ローカルのパスとなるようにします。
リモートのパス(PHPファイルのパス)をローカルのパスに変換するテーブルのようで、該当するファイルが見つからない場合は、リモートのパスでファイルが見つからないというエラーメッセージが出ます。
設定ができたら任意のブレークポイントを設定して、メニューから[実行]-[デバッグの開始]を選択するか、F5を押してデバックを開始します。

ブラウザでページにアクセスするとブレイクポイントで停止すると思います。
また、変数のインスペクトもできると思います。
以上で、XDebugが利用できるようになりました。
参考サイト
Visual Studio CodeでPHPのリモートデバッグ環境を構築する
[PHP] Xdebug のリモートデバッグ、理解していますか?