Windows10でXAMPPを使った場合、PHPデバッグがVScodeを用いて可能です。この情報はわりとあるのですが、意外にWindows10+XAMPP+PHPでVSCodeとなると情報が少なかったのでメモしておきます。
流れ
分かりづらいのはそれぞれの設定が多岐に渡りどこまでやって、どこまでやれてないかが見えづらいことです。手順書を作ったりしないと、慣れてないとうまくいかない印象です。
以下流れです。順番はそこまで意味がない気がしていますが。
- VSCodeの設定(settings.json)
- X Debug拡張機能のインストール(VSCode)
- launch.jsonファイルの作成
- X Debug用のphp.iniの設定
です。
Windows10 64bit、XAMPPは最新版は8とかもありますが、7.4が安定版なのでそれを使うのがベターでしょう。
X Debugが注意として、ver2系とver3系でphp.iniが違うのでそこくらいですね。
前提として、XAMPP(7.4.14)はインストール済みとします。
1.VSCodeの設定(settings.json)
VSCodeも入っているとして、そもそもPHPとVSCodeはどう紐付けているかというと、settings.jsonファイルで紐付いていると言えます。
VSCodeでファイル→ユーザー設定→設定を選ぶと、
PHPの項目を選んで、赤枠にあるsettings.jsonの編集をします。
ここに設定記述をすることで紐付けるわけですね。書き方は色々あるっぽいですが、詳細は割愛しつつ、最低限例えば以下のようにします。
{
"php.validate.executablePath": "C:\\xampp3\\php\\php.exe",
"php.executablePath": "C:\\xampp3\\php\\php.exe",
"php.suggest.basic": false
}
おそらく上の2つでオッケーだと思っていて、どちらもXAMPPのPHPパスを入れればオッケーとなります。
意外にこのsettings.jsonを忘れていると動かないってこともありそうなのでご注意を。
2.X Debug拡張機能のインストール(VSCode)
かなり分かりづらいのですが、VSCodeで拡張機能を入れます。
分かりづらいとは、PHP Debugとあるので、X Debugとの違いは?って混乱してしまうことでしょうか。勝手な理解では、X Debugというライブラリ?プラグインを用いて、PHPデバッグを行える拡張機能っていう理解です。X Debugについて詳しい人なら迷わないかもしれませんが、VSCodeの拡張機能で「X Debug」とか「PHP X Debug」というのはないので、そこは注意です。
以下、PHP Debugの拡張機能です。「PHP debug」とかいれれば出てきます。
これを入れたら次です。
3.launch.jsonファイルの作成
2のPHP Debugを入れVSCodeでデバッグと実行を押すと、以下の画面となります。
このとき、「launch.jsonファイルを作成します。」がリンクされているのでクリックすると、環境の選択となるので「PHP」をクリックすると、launch.jsonファイルが生成されます。
こんな形でlaunch.jsonファイルが生成されます。
上のListen for XDebugは、サーバを監視して連動します。例えばローカルホストでブラウザを立ち上げてそのブラウザ読み込み時で連動します。下のLaunch currently open scriptはPHPスクリプトを単独で実行してデバッグ出来ます。
違いはそれぞれ試したほうが早いです。
4.X Debug用のphp.iniの設定
肝心のX Debugは別にサイトからダウンロードします。
ただ、バージョンが多すぎてどれを落としていいか分からないんですね。そこで、ウィザードというのがあり、そこにphpinfoの内容を貼り付ければ自動的に判別してくれるのでそうしたほうが確実です。
具体的には、
1.phpinfoの情報をコピーする
C:\xampp3\php>php -i > info.txt
コマンドプロンプトで例えば上のように打ちます。
コードは「php -i」がphpinfoを取得で、「> info.txt」は、info.txtに出力するということです。全体としては「php -i > info.txt」でオッケーです。そうすると、info.txtが出来るのでそれを開いてコピーします。
Installation Wizardのテキストエリアに貼り付けます。
貼り付けた後「Analyse my phpinfo() output」ボタンをお忘れなく。
2.指定されたDLLをダウンロードする
例えば、
Instructions
Download php_xdebug-3.0.2-8.0-vs16-x86_64.dll
みたいに出てくるので、DLLを保存します。右クリックで名前を付けて保存とかですね。
そして、該当するXAMPPのパス(C:\xampp3\php\ext)などに上のDLLを貼り付けます。これがX Debug本体となります。
3.php.iniファイルの設定
最後に、php.iniの設定です。XAMPPのパス(C:\xampp3\php\php.ini)を編集します。
X Debugのバージョンが3系なら、上のは3系ですね。
[X debug]
zend_extension = C:\xampp3\php\ext\php_xdebug-3.0.2-8.0-vs16-x86_64.dll
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9000
を追記します。
ちなみに、v2系なら、VSCodeのPHP Debugのインストール手順にあるのですが、
[X debug]
zend_extension = DLLのファイルパス上との違いはphp_xdebug_2....ってことですね。
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
となるかと思います。
要するにphp.iniの指定の仕方がv2からv3で変わっているので注意ということですね。
デバッグ実行
実際にデバッガを動かすとどうなるかという以下のような画面になります。
ステップ実行も出来るので便利ですね。
確認すること
うまく行かないときは、以下を確認することをおすすめします。
1.PHPとVSCodeの紐付けとして、settings.jsonは設定したか
意外と忘れがちです。VSCode自体はエディタに過ぎず、PHPの実行パスなども勝手に判別してくれるわけではないですね。
2.X Debugのインストールは正しいか
コマンドプロンプトで、
# php -v
PHP 7.4.14 (cli) (built: Jan 5 2021 15:12:29) ( ZTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Xdebug v3.0.2, Copyright (c) 2002-2021, by Derick Rethans
php -v と入れると、 Xdebugのバージョンが出てこればOKです。
3.PHP(XAMPP)に合ったX Debugをダウンロードしたか
Wizardを使わずにやるとうまく行かないかもしれません。
4.デバッグ方法は正しいか?ファイル単体で開いてないか
例えばindex.phpなど単体で開いてもデバッグ出来ず、フォルダを開くような指示が出ていると思います。フォルダで開いて、そこからindex.phpを選択してデバッグするという感じですね。これもハマっていると意外に見落としがちです。
良いデバッグ生活を!