3.0版本的调试模式开启,必须在项目入口文件中添加常量APP_DEBUG定义,如下:
  1. define('APP_DEBUG',True); // 开启调试模式

开启调试模式后,你可能感觉不到什么变化,不管你信不信,调试模式已经开启了。
因为,新版的调试模式并没有默认开启页面Trace(这个功能在之前的版本是伴随着调试模式自动开启的),现在页面Trace功能是单独设置的,哪怕你在部署模式下也可以单独开启页面Trace信息显示。总之,当你需要页面Trace信息功能的时候,手动配置开启,例如:

  1. 'SHOW_PAGE_TRACE'=>True,

它与是否开启调试模式无关。
那么,新版的调试模式到底有什么特点呢?我们来慢慢揭晓吧~

调试配置

说到调试模式,首先需要了解如何进行调试配置。虽然默认的调试配置文件已经可以满足大多数情况的需求。
如果你开启了调试模式,系统会首先加载系统默认的调试配置文件,位于ThinkPHP/Conf/debug.php,如果你没有定义项目的调试配置文件的话,调试模式的参数就可以参考系统调试配置文件中的设置。默认调试配置参数如下:

  1. return  array(
  2. 'LOG_RECORD'=>true,  // 进行日志记录
  3. 'LOG_EXCEPTION_RECORD'  => true,    // 是否记录异常信息日志
  4. 'LOG_LEVEL'       =>   'EMERG,ALERT,CRIT,ERR,WARN,NOTIC,INFO,DEBUG,SQL',  // 允许记录的日志级别
  5. 'DB_FIELDS_CACHE'=> false, // 字段缓存信息
  6. 'APP_FILE_CASE'  =>   true, // 是否检查文件的大小写 对Windows平台有效
  7. 'TMPL_CACHE_ON'    => false,        // 是否开启模板编译缓存,设为false则每次都会重新编译
  8. 'TMPL_STRIP_SPACE'      => false,       // 是否去除模板文件里面的html空格与换行
  9. 'SHOW_ERROR_MSG'        => true,    // 显示错误信息
  10. );

系统调试配置中设置了:

  • 开启日志记录,任何错误信息和调试信息都会详细记录,便于调试;
  • 关闭模板缓存,模板修改可以即时生效;
  • 记录SQL日志,方便分析SQL;
  • 关闭字段缓存,数据表字段修改不受缓存影响;
  • 开启文件大小写严格检查(即使是Windows平台),帮助你提前发现Linux部署问题;

调试模式的目的就是为了更加方便的发现、记录、分析和解决错误,而在部署模式下面,可能很多潜在的错误你根本发现不了,这些错误就像一颗定时炸弹,存在隐患。
如果你觉得系统默认的调试配置不能满足你的需求,例如你想开启页面Trace信息显示的话,可以增加项目的调试配置文件,例如:

  1. return array(
  2. 'SHOW_PAGE_TRACE'  => True, // 显示页面Trace信息
  3. );

项目调试配置文件中只需要添加和系统调试配置文件不同(增加或者修改)的参数,然后保存到项目的Conf/debug.php即可。
一旦项目关闭调试模式,调试配置文件(包括系统调试配置文件和项目调试配置文件)就会失效,所有在调试配置文件中的参数将不会再起作用。同时,这个时候,系统又会按照惯例配置文件和项目配置文件中的参数配置来运行,因此你要懂得如何区别使用项目配置文件和项目调试配置文件。

调试状态

应用调试状态是新版新提出的一个概念,作用是在开启调试模式的状态下,可以给项目设置不同的应用状态,并自动加载不同的项目配置文件。可以当成是项目开发过程中的几个阶段,尤其是这些阶段需要同时或者交叉运行的时候,例如开发小组希望有自己的调试数据库和调试信息,而测试小组又希望有一个干净的测试环境,你不希望总是在更改项目配置文件或者调试配置文件。那么就可以为不同的阶段设置不同应用调试状态,并单独定义不同的配置文件。
应用调试状态的更改是通过设置APP_STATUS参数,默认的参数设置是debug,如果想在调试模式下面增加应用状态,例如测试状态,则可以在项目配置文件中改变设置如下:

  1. 'APP_STATUS' => 'test', //应用调试模式状态

这样的话,系统会自动尝试加载项目配置目录下面的test.php 配置文件,可以在test配置文件中改变相关设置,例如改变测试数据库的连接信息等等。

总结

通常情况下,调试配置文件里面可以进行一些开发阶段或者测试所需要的配置。例如,配置额外的数据库连接用于调试,开启日志写入便于查找错误信息、开启页面Trace输出更多的调试信息等等,所有这些,一旦关闭调试模式,都会失效。
由于调试模式没有任何缓存,因此涉及到较多的文件IO操作和模板实时编译,所以在开启调试模式的情况下,性能会有一定的下降,但不会影响部署模式的性能。

Thinkphp开启调试模式的更多相关文章

  1. 解决ThinkPHP中开启调试模式无法加载模块的问题。

    刚开始学习ThinkPHP就遇到这种问题,还是自己粗心. 错误如下: 原因:开启调试模式,区分大小写的,要把模块名首字母大写就OK了.也就是: [plain] view plain copy http ...

  2. 如何在ThinkPHP中开启调试模式

    1.为什么使用调试模式? 因为调试会在我们的模板页的最后增加一些trace信息. 2.什么是trace信息? 是ThinkPHP为我们提供好的一些包含了系统运行时间.占用内存.加载时间.请求的协议.. ...

  3. 解决ThinkPHP关闭调试模式时报错的问题汇总

    解决ThinkPHP关闭调试模式时报错的问题汇总 案例一: 最近用ThinkPHP开发一个项目,本地开发测试完成上传到服务器后,第一次打开正常,再刷新页面时就出现 "页面调试错误,无法找开页 ...

  4. thinkphp关闭调试模式(APP_DEBUG => false),导致程序出错

    thinkphp关闭调试模式(APP_DEBUG => false),导致程序出错,开启调试模式,不报错,怎么解决? 查看Logs日志记录: [ --29T09::+: ] 113.108.11 ...

  5. linux下thinkphp取消调试模式后找不到网页解决方案

    1.最大嫌疑是Runtime目录权限不足,导致common~runtime.php文件无法生成, 解决:1.整个Runtime目录删除,让系统重新生成; 2.给Runtime及以下的所有文件足够权限0 ...

  6. android user版本默认开启调试模式

    由于项目需要,需要发布版本默认开启调试模式,修改方式如下: 1.开启开发者模式 context.getSharedPreferences(DevelopmentSettings.PREF_FILE,C ...

  7. [其他]Jboss容器开启调试模式

    1.登陆服务器: 2.找到$JBOSS_HOME/bin/run.conf 3.找到# Sample JPDA settings for remote socket debuging这项,并将说明下方 ...

  8. 小米note开启调试模式

    1.刷机为开发版本. 2.拨电话界面输入   *#*#717717#*#*  开启调试模式. 3.驱动好像会自己安装.

  9. mac 蓝牙开启调试模式

    mac 蓝牙开启调试模式 按住shift+option+鼠标右键点右上角的蓝牙图标

随机推荐

  1. 【笔记】web 的回流与重绘及优化

    最近看了幕课网 web 前端性能优化的课程,其中说到了浏览器的回流(reflow) 及 重绘(repaint).觉得以后面试或许会被问到所以做一下笔记: 课程从回流及重绘这两个点延伸出了一个知识点就是 ...

  2. JavaScript学习笔记(十五)——对象之Date,RegExp

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  3. redis—操作基础

    内存数据库: 1.双击redis-server.exe =>启动2.双击redis-cli.exe =>打开管理控制台3.查看所有key keys *4.查看key类型 type myKe ...

  4. 集合、set以及HASH

    集合的数据结构数据结构就是内存中保存输出数据的形式,不同的数据结构会有不同的特征.堆栈结构:先进后出 代表类(stack):应用场景:java中的方法运行时所占用的空间就是这种结构.队列结构:先进先出 ...

  5. Spring Boot应用 打包与部署指南

    Spring Boot的打包与部署有何特点? Java Web应用在Spring Boot之前,通常是打包成war(Web application ARchive)包,结合Tomcat来完成部署. 对 ...

  6. 算法训练 最大的算式 DP

    算法训练 最大的算式 时间限制:1.0s   内存限制:256.0MB     问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果 ...

  7. 网页设计——6.html其他标签

    今天学习html的其他标签: 一.列表 1.无序列表ul 基本结构: <ul  type="属性值"> <li>列表内容</li> </u ...

  8. java8版本base64加密解密

    首先,先是加密,这里我使用了base64类 try { String asB64 = Base64.getEncoder().encodeToString("http://www.baidu ...

  9. 《跟我学IDEA》一、下载安装idea,设置背景字体编码,配置JDK

    写在前面的话:作为一个在IT界摸爬滚打6年+的老程序员,我属于会的东西多而杂,但是没有任何一样精通的.曾经自己也认真过,蹉跎过,最近和别的同事朋友聊天时,突然发现自己得到的东西却很少很少,于是想认真的 ...

  10. 【NOIP2012提高组】借教室

    90分暴力解法: 用线段树,初始值为该天的教室数,每个人来申请的时候在这段区间减去借走的数,然后查询最小值是否小于0,是就输出-1,否则继续. (其实在vijos是可以直接A的,他们的评测机太快了) ...