目录
配置PHP
- 打开php.ini中添加xdebug扩展
ini
[Xdebug]
zend_extension=D:/Code/skpanelN/V1.1/system/php/ext/php_xdebug.dll
xdebug.collect_params=1
xdebug.collect_return=1
xdebug.auto_trace=Off
xdebug.profiler_enable=Off
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
配置VSCODE
安装PHP调试扩展(注意作者)

打开设置,指定php.exe地址
- php 和 php debug都要设置




- php和php debug的setting.json在一个地方,可以一起设置了,注意需要反斜杠
配置调试参数
- 端口和之前ini设置一致就行

进行调试
-
PHP中添加断点

-
开启调试

-
刷新网页,到断点vscode闪动,点击单步

问题
- 开启xdebug后PHP速度明显降低,是因为每次连接都要监听9000端口
- 解决方法:
- 自动触发改成按需触发
ini
xdebug.remote_enable=1
xdebug.remote_autostart=0 #按需要触发
浏览器控制台触发
- 在页面打开 DevTools Console,执行:
js
document.cookie = "XDEBUG_SESSION=VSCODE; path=/";
- 然后 $.ajax({...}) 的 POST 请求会自动带上 cookie,断点就会命中。
- 关闭触发:
js
document.cookie = "XDEBUG_SESSION=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
VSCODE 只是一个 session 名字,你用 PHPSTORM 也行,关键是 cookie 名必须是 XDEBUG_SESSION。
get
?XDEBUG_SESSION_START=1
post
js
$.ajax({
url: sysapi.sys_api_fixedQueryHis + '?XDEBUG_SESSION_START=PHPSTORM',
type: 'post',
...
});
header
js
$.ajax({
url: sysapi.sys_api_fixedQueryHis,
type: 'post',
contentType: 'application/json',
dataType: 'json',
headers: {
'XDEBUG_SESSION': 'PHPSTORM'
},
data: JSON.stringify(param),
...
});
cookie插件
装 Xdebug Helper (Chrome/Edge)
选择 IDE key(常用 PHPSTORM),点 "Debug"
之后你所有请求(包括 AJAX POST)都会带上 cookie,断点就会命中。