1. 开启ThinkPHP调试模式
在Linux环境下,ThinkPHP的调试模式需通过配置文件或入口文件开启。推荐修改项目根目录下的.env文件(优先级高于config目录),设置APP_DEBUG=true;或在config/app.php中直接定义'app_debug' => true。开启后,系统会显示详细错误信息、关闭模板缓存(修改模板即时生效)、记录SQL日志(需配合SQL_DEBUG_LOG=true),便于快速定位问题。
2. 使用ThinkPHP内置调试工具
dump()函数输出变量内容(比var_dump()更友好,支持格式化),例如dump($user, true, '用户信息', true)(第三个参数为标签,第四个参数控制是否显示类型);debug_start('label')和debug_end('label')包裹代码段,记录其运行时间及内存占用,例如debug_start('query_time'); // 数据库查询代码; debug_end('query_time');;SHOW_PAGE_TRACE=true(或config/app.php中'show_page_trace' => true),页面底部会显示调试工具栏,包含SQL语句、执行时间、请求参数、路由信息等。3. 配置Xdebug进行断点调试
Xdebug是PHP扩展,需配合IDE(如PhpStorm、VS Code)实现可视化调试:
pecl install xdebug)或手动编译(下载源码后执行phpize && ./configure --enable-xdebug && make && make install);php --ini查找路径)中添加:[Xdebug] zend_extension=xdebug.so xdebug.mode=debug xdebug.start_with_request=yes xdebug.client_host=127.0.0.1 xdebug.client_port=9003 xdebug.idekey=PHPSTORM (xdebug.mode=debug启用调试,client_host为IDE所在机器IP,client_port为IDE监听端口);Settings > PHP > Debug,设置Debug port为9003(与php.ini一致);创建Server配置(名称任意,主机为127.0.0.1,端口为80,勾选Use path mappings,将项目目录映射到本地);点击Start Listening for PHP Debug Connections启动监听,然后在代码中设置断点,通过浏览器访问项目即可触发调试。4. 利用日志系统记录调试信息
ThinkPHP的日志系统支持多级别(debug、info、error等)、多通道(文件、数据库等)记录:
Log门面记录信息,例如use think\facade\Log; Log::debug('调试信息', ['user_id' => 1]);(debug级别仅在调试模式下显示);config/database.php中的'trigger_sql' => true(或.env中APP_DEBUG=true),SQL语句会记录到runtime/log目录下的日志文件中;config/log.php中设置日志通道(默认file),可调整日志级别('level' => ['debug'])、日志格式('format' => '[%s][%s] %s')、日志目录('path' => '',默认runtime/log)。5. 使用ThinkPHP Debugbar工具
Debugbar是一个可视化的调试工具栏,显示在页面底部,无需修改代码即可查看调试信息:
composer require barryvdh/laravel-debugbar --dev(ThinkPHP兼容);config/app.php的providers数组中添加Barryvdh\Debugbar\ServiceProvider::class,aliases数组中添加'Debugbar' => Barryvdh\Debugbar\Facade::class;6. 命令行调试与API测试
php think run命令启动项目(默认监听8000端口),可在终端实时查看输出信息(如错误、日志),适合调试CLI脚本或API接口;Postman或curl测试API接口,例如curl -X GET http://localhost:8000/api/user/1,检查返回的JSON数据是否符合预期,便于调试接口逻辑。