使用xdebug:
下载
Xdebug: Downloads
或在这里输入PHP的信息给出推荐的版本:Xdebug: Support — Tailored Installation Instructions
配置:
打开php.ini文件,在文件最后添加:(3.0的配置项有些改了)
[XDebug]
zend_extension = php_xdebug-3.0.2-7.4-vc15-nts-x86_64.dllxdebug.output_dir="D:\Work\php\xdebug\output"
xdebug.start_with_request = trigger
xdebug.client_port = 9003
xdebug.mode = debug,coverage
php_xdebug-3.0.2-7.4-vc15-nts-x86_64.dll文件放在php的ext目录下可以使用相对路径。
这里使用的端口号是默认的9003,如需改添加端口配置项:
xdebug.client_port = 9100(指的是调试工具的端口,如:vscode的PHP Debug)
xdebug.start_with_request 指定xdebug的启动方式,可选值:
- yes 任何请求都启动。(这种方式对所有访问都会启动调试,浏览器直接访问的情况下会报:Xdebug: [Step Debug] Time-out connecting to debugging client。想要正常访问必须先启动调试工具,如:vscode的PHP Debug。)
建议使用trigger的方式,不启动调试工具的情况下也能访问。 - trigger 请求中有参数(XDEBUG_SESSION)才启动,可以是get/post请求:http://a.com/?XDEBUG_SESSION=abc。参数值可以任意,除非设置了xdebug.trigger_value。参考:Xdebug 3.0 WSL2 和 VSCode - 有效的配置答案 - 爱码网
参考:Xdebug: Documentation » Step Debugging
安装好vscode后,安装扩展:
添加配置:
注意:port = xdebug的默认端口是9003,如果需要改端口号,要与xdebug的配置相同(xdebug的端口号配置项:xdebug.client_port = 9100) 没有运行选项的,要先创建launch.json文件
{"name": "Listen for XDebug","type": "php","request": "launch",//新版的xdebug3的默认端口是9003"port": 9003},{"name": "Launch currently open script","type": "php","request": "launch","program": "${file}","cwd": "${fileDirname}","port": 9003}
调试
调试方式有两种,脚本和web方式。
脚本方式:运行方式选择Launch currently open script
在要调试的文件中打上断点,按F5启动调试(或 运行->启动调试),进入调试状态。
web方式:选择运行方式:Listen for XDebug
进入代码文件所在目录,启动PHP的内置web服务器,运行命令:(端口号可以自定义,不影响调试)
php -S localhost:8001
启动调试:(这时vscode还没有捕获断点)
打开浏览器,访问:http://localhost:8001/a.php
浏览器一直在转等输出,vscode进入调试状态。
参考:
vscode使用xdebug3调试PHP脚本_raoxiaoya的博客-CSDN博客