VSCode で PHP デバッグをするのに毎回ハマるので、自分用のメモです。
- 想定する xdebug 設定
$ cat /etc/php.d/16-xdebug-add.ini
zend_extension=xdebug.so
xdebug.start_with_request = yes
xdebug.log = /tmp/xdebug.log
xdebug.mode = debug
- firewalld は止めたか?
- sudo systemctl stop firealld
- /tmp/xdebug.log を確認する。想定するホスト・ポートに接続しているか?
- 接続先ポートが 9003 以外 → launch.json の port を 9003 に変更。
- 違うホストに接続している → launch.json の hostname を確認。
- CLI デバッグで、Xdebug は動いているようだが止まらない?
- launch.json の program が “${file}” か、もしくはソースへの絶対パスになっているか?
- エディタ画面で、php のソースがアクティブになっているか?
- xdebug_info() というのがあるらしい。
$ cat xdebug.php
<?php
xdebug_info();
$ php xdebug.php
(中略)
Diagnostic Log
[Step Debug] WARN: Creating socket for 'localhost:9003', poll success, but error: Operation now in progress (29).
[Step Debug] WARN: Creating socket for 'localhost:9003', connect: Cannot assign requested address.
[Step Debug] ERR: Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port).
- ソケットを作るのに失敗している。
- これに関係しそうなスレッド:Xdebug does not work – vscode under linux
- CLI で今のところうまくいっている設定のスケルトン。
- これは、組み込みの “Launch current script in console” として提供されている模様。
{
"name": "Launch current script in console",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"externalConsole": false,
"port": 9003
},
定期的にダメになるので、逐次情報をアップデートしていかないと…。