通八洲科技

VSC怎么设置PHP调试模式_断点调试详细流程【详解】

日期:2025-12-29 00:00 / 作者:蓮花仙者
VS Code 调试 PHP 必须同时配置 Xdebug 3(PHP 端)和 PHP Debug 插件(VS Code 端),关键在于 php.ini 中启用 zend_extension、设置 xdebug.mode=debug 与 client_port=9003,并在 launch.json 中匹配 port 和 pathMappings。

VS Code 能调试 PHP,但不是开箱即用——必须同时配对 Xdebug 3(PHP 端)和 PHP Debug 插件(VS Code 端),缺一不可。断点不触发、连接超时、变量为空,90% 都是这两端配置没对齐。

确认 Xdebug 3 已正确加载并监听本地

这是整个流程的地基。很多人卡在“点了 F5 没反应”,其实 VS Code 根本没收到连接请求。

[xdebug]
zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
xdebug.log=/tmp/xdebug.log

VS Code 中装对插件 + 配准 launch.json

只装「PHP」扩展不够,它只提供语法高亮和跳转;真正收 Xdebug 连接的是 PHP Debug 插件(作者:felixfbecker)。

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for Xdebug",
      "type": "php",
      "request": "launch",
      "port": 9003,
      "pathMappings": {
        "/var/www/html": "${workspaceFolder}"
      }
    }
  ]
}

触发调试:URL 参数 or CLI 脚本?怎么选

两种方式本质一样,都是让 PHP 主动连回 VS Code。区别在于你当前开发场景。

{
  "name": "Launch currently open script",
  "type": "php",
  "request": "launch",
  "program": "${file}",
  "cwd": "${fileDirname}",
  "port": 9003
}

断点生效但变量看不到?别急着重装

常见现象:程序停在断点,调用堆栈正常,但「变量」面板空空如也,或显示 undefined

最常被忽略的一点:Xdebug 日志默认不开启,而它是唯一能告诉你“到底连没连上”的证据。只要调试异常,第一反应不是重装,而是打开 xdebug.log 看第一行错误。