[XAMPP Mac]VSCodeでPHPのXdebugを使いデバッグ!しかしブレークポイントが止まらない


近況報告

エンジニア転職成功しました。YouTubeでエンジニア転職したい方向けに情報発信しています。

結論、php.iniの「xdebug.remote_port = 9000」のportとlaunch.jsonのportを9001にしたら解決しました。

.//xamppfiles/etc/php.ini
[XDebug]
xdebug.remote_port = 900190009001に変更
launch.json
    "version": "0.2.0",
    "configurations": [
        {
            "port": 9001,             90009001に変更
        }
    ],

前提条件

  1. xdebug.soはビルドしてextension_dirにコピー済
  2. php.iniで設定済
  3. launch.json設定済
  4. Apache再起動済
環境 項目
OS Mac OS
開発環境 XAMPP
IDE VSCode
PHPバージョン 7.0.1
Xdebugバージョン v2.8.0

解決に到るまで

現状の確認から行い、次にググった情報から一個一個問題点を洗い出し、解決に至りました。

1.xdebugは動いているか?

僕の場合、デバッグ開始しても何故か変数にもウォッチ式にも値が反映されていませんでした。

そこで「xdebug自体動いていないんじゃないか?」と思い、phpinfo();で
php.iniで設定したxdebugの設定が反映されているか確認する所から始めました

反映されていますね。まずはOK

2.launch.jsonの設定は問題ない?

一番可能性があるなと思っていたのがlaunch.json。
デバッグの実行に関連する構成情報をまとめているファイルだが、ここの記述例がサイトによってバラバラなんだよね。

  • "stopOnEntry": true, を入れたら直った
  • デバッグ時に"name"の値と同じ項目を選択してるか?

等、ググった情報を試してもいくも、全く直らず。

パスの設定に関しても問題なさそうので、ここは一旦スルー。

3.その他、設定ファイルの記入が漏れている?

https://qiita.com/rrryutaro/items/c08f667f20de6abf482f
こちらの投稿にxdebug.iniに以下3行を追記すると動くと書いてあったので試してみた

.//xamppfiles/etc/xdebug-2.7.2/xdebug-2.7.2/xdebug.ini
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 1

ビクともしない・・・

4.php.iniファイルのxdebug.remote_autostart=1にすると動きはする

実は、iniファイルのXDebugセクションでxdebug.remote_autostart=1にすると動きますよという書き込みを見かけたので
やってみると、なんとデバッグが効き出した!

.//xamppfiles/etc/php.ini
[XDebug]
zend_extension="/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_autostart=1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9000

しかし・・・デバッグはブレークポイントで止まらず、一番上の行から順に見て行ってしまう・・・。
これじゃブレークポイントの意味ないやん。

5.php.iniファイルは本当に正しい?

もう最後はiniファイルしかない。
と思って、いろいろ調べているとこのような書き込みが

xdebug.remote_port="9001" # 何故かデフォルトの 9000 だとうまくいかないことが多い
https://qiita.com/kojionilk/items/5cff97ece056fd3c469f

まさか・・・

ダメもとでiniファイルを以下に修正

.//xamppfiles/etc/php.ini
[XDebug]
zend_extension="/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_autostart=1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9001       #       ⇦90009001に変更

さらに、launch.jsonのportも9001に変更

launch.json
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9001,       #       90009001に変更
            "serverSourceRoot": "${workspaceRoot}",
            "localSourceRoot": "${workspaceRoot}"
        }
    ],

動け・・・

動いた!

やっと出来たーーー!

Mac + XAMPPのエラーは大変

XAMPPってWindowsとLinuxで使ってるユーザー多いから、中々同じ環境の人の記事がなくてハマったけど、何とか解決しました。
同じくXDebugでブレークポイントが止まらない方の参考になれば幸いです。