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

#近況報告

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

https://www.youtube.com/channel/UCcXQG8lu_EdyP2Cbhtz1bcA



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

```vim:.//xamppfiles/etc/php.ini
[XDebug]
xdebug.remote_port = 9001      ⇦9000を9001に変更
```

```launch.json
    "version": "0.2.0",
    "configurations": [
        {
            "port": 9001,             ⇦9000を9001に変更
        }
    ],
```



## 前提条件

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は動いているか？

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

![スクリーンショット 2019-11-20 13.04.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244639/7ee97fc0-14d5-3e55-aa45-439e35671e8c.png)

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

![スクリーンショット 2019-11-20 13.05.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244639/6c8af247-6254-b185-7fa6-bf2e03e43abc.png)


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


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

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

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

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

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

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

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

```php:.//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にすると動きますよという書き込みを見かけたので
やってみると、なんとデバッグが効き出した！

```vim:.//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ファイルを以下に修正

```vim:.//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       #       ⇦9000を9001に変更
```


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

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


動け・・・

![スクリーンショット 2019-11-20 13.11.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244639/0c7754e3-85a0-30f4-9094-d1d3a4254485.png)


動いた！

やっと出来たーーー！


## Mac + XAMPPのエラーは大変

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