#近況報告
エンジニア転職成功しました。YouTubeでエンジニア転職したい方向けに情報発信しています。
結論、php.iniの「xdebug.remote_port = 9000」のportとlaunch.jsonのportを9001にしたら解決しました。
[XDebug]
xdebug.remote_port = 9001 ⇦9000を9001に変更
"version": "0.2.0",
"configurations": [
{
"port": 9001, ⇦9000を9001に変更
}
],
前提条件
- xdebug.soはビルドしてextension_dirにコピー済
- php.iniで設定済
- launch.json設定済
- 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行を追記すると動くと書いてあったので試してみた
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にすると動きますよという書き込みを見かけたので
やってみると、なんとデバッグが効き出した!
[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ファイルを以下に修正
[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に変更
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9001, # ⇦9000を9001に変更
"serverSourceRoot": "${workspaceRoot}",
"localSourceRoot": "${workspaceRoot}"
}
],
動け・・・
動いた!
やっと出来たーーー!
Mac + XAMPPのエラーは大変
XAMPPってWindowsとLinuxで使ってるユーザー多いから、中々同じ環境の人の記事がなくてハマったけど、何とか解決しました。
同じくXDebugでブレークポイントが止まらない方の参考になれば幸いです。