129. 调试模式

ThinkPHP有专门为开发过程而设置的调试模式,开启调试模式后,会牺牲一定的执行效率,但带来的方便和除错功能非常值得。

强烈建议在开发阶段始终开启调试模式(直到正式部署后关闭调试模式),方便及时发现隐患问题和分析、解决问题。

应用默认是部署模式,在开发阶段,可以修改环境变量APP_DEBUG开启调试模式,上线部署后切换到部署模式。

本地开发的时候可以在应用根目录下面定义.env文件。

通过create-project默认安装的话, 会在根目录自带一个.example..env文件,你可以直接更名为.env文件。

.env文件的定义格式如下:

// 设置开启调试模式
APP_DEBUG =  true
// 其它的环境变量设置
// ...

调试模式的优势在于:

  • 开启日志记录,任何错误信息和调试信息都会详细记录,便于调试;
  • 会详细记录整个执行过程;
  • 模板修改可以即时生效;
  • 通过Trace功能更好的调试和发现错误;
  • 发生异常的时候会显示详细的异常信息;

由于调试模式没有任何缓存,因此涉及到较多的文件IO操作和模板实时编译,所以在开启调试模式的情况下,性能会有一定的下降,但不会影响部署模式的性能。

一旦关闭调试模式,发生错误后不会提示具体的错误信息,如果你仍然希望看到具体的错误信息,那么可以在app.php文件中如下设置:

// 显示错误信息
'show_error_msg'        =>  true,  

出于安全考虑,V6.0.3+版本开始已经取消了调试模式的默认异常页面中的环境变量显示。

下一节:调试模式并不能完全满足我们调试的需要,有时候我们需要手动的输出一些调试信息。除了本身可以借助一些开发工具进行调试外,ThinkPHP还提供了一些内置的调试工具和函数。

Trace调试功能就是ThinkPHP提供给开发人员的一个用于开发调试的辅助工具。可以实时显示当前页面或者请求的请求信息、运行情况、SQL执行、错误信息和调试信息等,并支持自定义显示,并且支持没有页面输出的操作调试。最新版本页面Trace功能已经不再内置在核心,但默认安装的时候会自动安装topthink/think-trace扩展,所以你可以在项目里面直接使用。