You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows11下VSCode中Xdebug与本地主机连接调试问题

问题描述
  • 原Windows10环境下可通过VSCode+PHP Debug+Xdebug实现PHP脚本断点调试,更换Windows11后无法与浏览器交互调试
  • 三种调试模式异常情况:
    • Listen for Xdebug:浏览器访问localhost无法与VSCode建立连接
    • Launch Built-in web server:浏览器能启动但断点不触发
    • Launch currently open script:断点可触发,但无法与localhost/debug页面交互
  • 已统一端口为9003,netstat显示Listen模式下9000端口被Code.exe占用
环境信息
  • PHP Debug扩展版本:v1.32.1
  • PHP版本:8.2.4.0
  • Xdebug版本:3.2.1
  • XAMPP的Apache、MySQL已正常启动,浏览器访问localhost/debug可显示XAMPP图标
相关配置

launch.json

{    
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003
        },
        
        { // port was previously as 0
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9003,
            "runtimeArgs": [
                "-dxdebug.start_with_request=yes"
            ],
            "env": {
                "XDEBUG_MODE": "debug,develop",
                "XDEBUG_CONFIG": "client_port=${port}"
            }
        },
        {
            "name": "Launch Built-in web server",
            "type": "php",
            "request": "launch",
            "runtimeArgs": [
                "-dxdebug.mode=debug",
                "-dxdebug.start_with_request=yes",
                "-S",
                "localhost:0"
            ],
            "program": "",
            "cwd": "${workspaceRoot}",
            "port": 9003,
            "serverReadyAction": {
                "pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
                "uriFormat": "http://localhost:%s",
                "action": "openExternally"
            }
        }
    ]
}

xdebug_info()输出

Version 3.2.1
Support Xdebug on Patreon, GitHub, or as a business
Enabled Features
(through 'xdebug.mode' setting)
Feature Enabled/Disabled    Docs
Development Helpers ✔ enabled   ⊕
Coverage    ✘ disabled  ⊕
GC Stats    ✘ disabled  ⊕
Profiler    ✘ disabled  ⊕
Step Debugger   ✘ disabled  ⊕
Tracing ✘ disabled  ⊕
Optional Features
Compressed File Support yes (gzip)
Clock Source    GetSystemTimePreciseAsFileTime
'xdebug://gateway' pseudo-host support  no
'xdebug://nameserver' pseudo-host support   no
Systemd Private Temp Directory  not enabled
Diagnostic Log
No messages
PHP
Build Configuration
Version (Run Time)  8.2.4
Version (Compile Time)  8.2.4
Debug Build no
Thread Safety   enabled
Thread API  Windows Threads
Settings
Configuration File (php.ini) Path   no value
Loaded Configuration File   C:\xampp\php\php.ini
Scan this dir for additional .ini files (none)
Additional .ini files parsed    (none)
Directive   Local Value Master Value    Docs
xdebug.cli_color    0   0   ⊕
xdebug.client_discovery_header  HTTP_X_FORWARDED_FOR,REMOTE_ADDR    HTTP_X_FORWARDED_FOR,REMOTE_ADDR    ⊕
xdebug.client_host  localhost   localhost   ⊕
xdebug.client_port  9003    9003    ⊕
xdebug.cloud_id no value    no value    ⊕
xdebug.collect_assignments  Off Off ⊕
xdebug.collect_return   Off Off ⊕
xdebug.connect_timeout_ms   200 200 ⊕
xdebug.discover_client_host Off Off ⊕
xdebug.dump.COOKIE  no value    no value    ⊕
xdebug.dump.ENV no value    no value    ⊕
xdebug.dump.FILES   no value    no value    ⊕
xdebug.dump.GET no value    no value    ⊕
xdebug.dump.POST    no value    no value    ⊕
xdebug.dump.REQUEST no value    no value    ⊕
xdebug.dump.SERVER  no value    no value    ⊕
xdebug.dump.SESSION no value    no value    ⊕
xdebug.dump_globals On  On  ⊕
xdebug.dump_once    On  On  ⊕
xdebug.dump_undefined   Off Off ⊕
xdebug.file_link_format no value    no value    ⊕
xdebug.filename_format  no value    no value    ⊕
xdebug.force_display_errors Off Off ⊕
xdebug.force_error_reporting    0   0   ⊕
xdebug.gc_stats_output_name gcstats.%p  gcstats.%p  ⊕
xdebug.halt_level   0   0   ⊕
xdebug.idekey   VSCODE  VSCODE  ⊕
xdebug.log  no value    no value    ⊕
xdebug.log_level    7   7   ⊕
xdebug.max_nesting_level    256 256 ⊕
xdebug.max_stack_frames -1  -1  ⊕
xdebug.mode develop develop ⊕
xdebug.output_dir   C:\Windows\Temp C:\Windows\Temp ⊕
xdebug.profiler_append  Off Off ⊕
xdebug.profiler_output_name cachegrind.out.%p   cachegrind.out.%p   ⊕
xdebug.remote_autostart (setting renamed in Xdebug 3)   (setting renamed in Xdebug 3)   ⊕
xdebug.remote_enable    (setting renamed in Xdebug 3)   (setting renamed in Xdebug 3)   ⊕
xdebug.remote_host  (setting renamed in Xdebug 3)   (setting renamed in Xdebug 3)   ⊕
xdebug.remote_mode  (setting renamed in Xdebug 3)   (setting renamed in Xdebug 3)   ⊕
xdebug.remote_port  (setting renamed in Xdebug 3)   (setting renamed in Xdebug 3)   ⊕
xdebug.scream   Off Off ⊕
xdebug.show_error_trace Off Off ⊕
xdebug.show_exception_trace Off Off ⊕
xdebug.show_local_vars  Off Off ⊕
xdebug.start_upon_error default default ⊕
xdebug.start_with_request   default default ⊕
xdebug.trace_format 0   0   ⊕
xdebug.trace_options    0   0   ⊕
xdebug.trace_output_name    trace.%c    trace.%c    ⊕
xdebug.trigger_value    no value    no value    ⊕
xdebug.use_compression  1   1   ⊕
xdebug.var_display_max_children 128 128 ⊕
xdebug.var_display_max_data 512 512 ⊕
xdebug.var_display_max_depth    3   3   ⊕

php.ini配置

[Zend Modules]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9003

[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9003
xdebug.idekey=VSCODE
[Syslog]
解决步骤

1. 修复php.ini的Xdebug 3配置

Xdebug 3已废弃remote_*系列配置,全部改用新参数,直接替换[XDebug]区块内容:

[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.mode = debug,develop
xdebug.start_with_request = yes
xdebug.client_host = localhost
xdebug.client_port = 9003
xdebug.idekey = VSCODE

删除[Zend Modules]下的所有Xdebug相关配置,避免冲突。

2. 调整VSCode的launch.json配置

针对Listen for Xdebug模式

确保端口和php.ini一致,无需额外修改,但需注意:

  • 启动VSCode的调试监听后,浏览器访问PHP文件时,xdebug.start_with_request=yes会自动触发调试
  • 检查Windows防火墙是否允许VSCode接收9003端口的连接

针对Launch Built-in web server模式

修改runtimeArgs中的端口指定,避免随机端口问题,同时确保直接打开当前编辑的PHP文件:

{
    "name": "Launch Built-in web server",
    "type": "php",
    "request": "launch",
    "runtimeArgs": [
        "-dxdebug.mode=debug",
        "-dxdebug.start_with_request=yes",
        "-S",
        "localhost:8080"
    ],
    "program": "",
    "cwd": "${workspaceRoot}",
    "port": 9003,
    "serverReadyAction": {
        "pattern": "Development Server \\(http://localhost:8080\\) started",
        "uriFormat": "http://localhost:8080/${relativeFile}",
        "action": "openExternally"
    }
}

3. 解决端口占用问题

netstat显示9000端口被Code.exe占用,执行以下操作:

  • 关闭VSCode所有调试会话,重启VSCode
  • 暂时禁用无关扩展,排查是否有其他扩展占用端口

4. 验证配置生效

重启XAMPP的Apache服务,执行php -v确认Xdebug 3.2.1已加载;再次访问xdebug_info()页面,确认Step Debugger显示为enabled。

内容的提问来源于stack exchange,提问作者Angel Gaspar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:47:52