vscode调试thinkphp项目

教训与启发

有的时候做一件事就不能为了快速到达目的而盲目的横冲直撞

做了一个ctfshow西瓜杯tpdoor的题目,是thinkphp框架, 想要调试一下, 于是下载了xdebug, 但是怎么也调试不了, 然后直接照着别人的浏览器一个一个的试(现在想起来感觉好愚蠢),试到头晕眼花也没搞成.

从图书馆会宿舍的路上静下心来想了想, 把事情梳理了一遍, 觉得如果先学习一下xdebug调试php代码的原理说不定事情就解决了,其实一点也不复杂.

vscode调试thinkphp项目

朴素理解, 未必准确

xdebug是php的扩展, 执行php代码的时候会被激活, 在断点处停下, 并从指定端口尝试连接IDE

vscode中的phpdebug扩展, 监听launch.json中定义的端口, 接受xdebug传递的信息以进行调试

因此配置好之后, 使用php think run运行php服务, 再F5监听端口即可.

这里的调试和本机直接调试不同, 调试并不立即执行代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
```
[xdebug]
zend_extension=D:/phpstudy/phpstudy_pro/Extensions/php/php8.2.9nts/ext/php_xdebug.dll
xdebug.collect_params=1
xdebug.collect_return=1
xdebug.auto_trace=Off
xdebug.output_dir="D:/phpstudy/phpstudy_pro/Extensions/php_log/php8.2.9nts.xdebug.trace"
xdebug.profiler_enable=Off
xdebug.remote_enable=Off
xdebug.client_host=localhost
xdebug.client_port=9003
xdebug.log="D:\xdebug_log"
xdebug.mode = debug
xdebug.start_with_request=yes
xdebug.remote_handler=dbgp

launch.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug ThinkPHP",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"D:/code/test/tp/public": "${workspaceFolder}/public",
"D:/code/test/tp/app" : "${workspaceFolder}/app"
}
}
]
}

当服务器与本地路径不一致时,需通过映射让 IDE 正确关联断点
(比如WSL中运行服务, IDE在主机上运行)


vscode调试thinkphp项目
http://mekrina.github.io/blogs/windows/vscode调试thinkphp项目/
作者
John Doe
发布于
2025年3月20日
许可协议