Xdebug で止まらない

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).
  • ソケットを作るのに失敗している。
  • CLI で今のところうまくいっている設定のスケルトン。
    • これは、組み込みの “Launch current script in console” として提供されている模様。
        {
            "name": "Launch current script in console",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "externalConsole": false,
            "port": 9003
        },

定期的にダメになるので、逐次情報をアップデートしていかないと…。

タイトルとURLをコピーしました