在Ubuntu环境下,ThinkPHP的调试模式需通过配置文件开启。优先修改项目根目录下的.env
文件(本地开发环境优先),添加或修改以下内容:
APP_DEBUG=true
APP_ENV=local
若使用旧版本ThinkPHP,也可修改config/app.php
文件,设置:
'debug' => true,
开启调试模式后,ThinkPHP会显示详细错误信息、关闭模板缓存(修改模板即时生效)、记录SQL日志,帮助快速定位问题。
Xdebug是PHP的调试扩展,支持断点调试、堆栈跟踪等功能,需与IDE(如PhpStorm、VSCode)配合使用。
sudo apt install php-xdebug # 根据PHP版本调整,如php8.1-xdebug
php --ini
查找路径,如/etc/php/8.1/cli/php.ini
),添加以下内容:[xdebug]
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1 # IDE所在主机IP
xdebug.client_port=9003 # 调试端口(默认9003,需与IDE一致)
xdebug.idekey=PHPSTORM # IDE标识(如VSCode用VSCODE)
php -m | grep xdebug
,若输出xdebug
则表示安装成功。ThinkPHP提供了一系列内置函数和工具,无需额外安装即可使用:
dump()
函数输出变量信息(比var_dump
更友好,支持格式化),例如:$user = UserModel::find(1);
dump($user->toArray()); // 输出数组格式的变量信息
G()
函数测试代码段的运行时间和内存占用,例如:G('start');
$users = UserModel::select();
G('end');
echo '执行时间:'.G('start', 'end', 's').'秒';
echo '内存占用:'.G('start', 'end', 'm').'KB';
runtime/log
目录下(如runtime/log/202509/sql.log
)。以PhpStorm为例,配置步骤如下:
Run
→Edit Configurations
,添加PHP Remote Debug
配置,设置Server
名称(如Ubuntu-ThinkPHP
),并填写Host
(Ubuntu服务器IP)、Port
(默认80)、Debugger
(Xdebug)、IDE key
(与xdebug.idekey
一致)。Server
配置中,添加本地项目目录(如/home/user/project
)与远程Ubuntu项目目录(如/var/www/html/thinkphp
)的映射。Debug
按钮(虫子图标),然后在浏览器中访问项目URL(如http://ubuntu-ip/thinkphp/public
),PhpStorm会自动捕获断点并显示变量信息。Debugbar是一款可视化调试工具,可在页面底部显示数据库查询、路由、配置等信息。安装步骤如下:
composer require barryvdh/laravel-debugbar --dev
config/app.php
的providers
数组中添加:Barryvdh\Debugbar\ServiceProvider::class,
aliases
数组中添加:'Debugbar' => Barryvdh\Debugbar\Facade::class,
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
,发布配置文件后,Debugbar会自动显示在页面底部。ThinkPHP的日志系统支持记录不同级别的信息(如错误、警告、调试),可将日志输出到文件或数据库。
.env
文件中设置:LOG_LEVEL=debug # 记录所有级别日志(包括调试信息)
Log
门面记录自定义日志,例如:use think\facade\Log;
Log::debug('用户登录失败,用户名:'.$username);
runtime/log
目录下,可通过tail -f runtime/log/202509/debug.log
实时查看最新日志。以上方法可根据项目需求组合使用,例如:开启调试模式+Xdebug+PhpStorm用于断点调试,使用Debugbar查看实时请求信息,通过日志分析历史问题。调试完成后,记得关闭调试模式(APP_DEBUG=false
)以避免影响生产环境性能。