我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文中,苏南大叔说的是正统原版的thinkphp如何开启调试模式,主要目的是:要显示完整的报错信息。在苏南大叔的往期文章中,苏南大叔有过类似的描述。但是,都是基于某个相关开源代码(例如thinkcmf)的。目前,本文中,苏南大叔的例子是:最原始的thinkphp5框架,不掺杂外加的其他逻辑。

苏南大叔:thinkphp5如何开启代码调试?如何拦截php系统错误信息 - thinkphp5-debug
thinkphp5如何开启代码调试?如何拦截php系统错误信息(图6-1)

默认情况下,thinkphp会拦截相关的错误信息,导致调试过程受阻。如果显示完整的php报错信息的话,还是非常有利于代码调试过程的。但是,一定要注意:在线上环境,一定不能暴露详细的报错信息。

苏南大叔:thinkphp5如何开启代码调试?如何拦截php系统错误信息 - thinkphp报错信息
thinkphp5如何开启代码调试?如何拦截php系统错误信息(图6-2)

测试环境:mac/thinkphp@5.0.24

方案一:修改.env文件 (推荐)

修改.env文件这个方案,是thinkphp官方推荐的。不过,苏南大叔却不是太喜欢。主要是,可能会有傻运维给配置配错了根目录,然后.env文件又默认可以下载.... 当然,99.99%的时候,并不会出这些问题。但是,苏南大叔就是有些担心。

根目录下的.env文件如下:

app_debug =  true

苏南大叔:thinkphp5如何开启代码调试?如何拦截php系统错误信息 - env文件
thinkphp5如何开启代码调试?如何拦截php系统错误信息(图6-3)

参考文章:

方案二:修改index.php (此路不通)

对于thinkcmf来说,可以在public/index.php里面,设置下述代码:
public/index.php:

define("APP_DEBUG", true);

但是纯正的thinkphp5,并不支持此设置,此路不通。更详细的设置,请参见:

方案三:修改config.php

修改配置文件里面的app_debug也是可以的,例如修改默认配置文件:
application/config.php:

return [
    'app_debug'              => false,
];

苏南大叔:thinkphp5如何开启代码调试?如何拦截php系统错误信息 - config文件
thinkphp5如何开启代码调试?如何拦截php系统错误信息(图6-4)

应该注意的是:此方法没有.env文件配置,级别高。也就是说.env文件里面如果进行了配置的话,其优先级是高于application/config.php的。

苏南大叔:thinkphp5如何开启代码调试?如何拦截php系统错误信息 - config文件
thinkphp5如何开启代码调试?如何拦截php系统错误信息(图6-5)

方案四:破坏系统错误拦截功能

如果,无论如何上述几个方案配置都失效的话,这里有个王牌方案,一般情况下,并不推荐使用。那就是修改thinkphp5的源码,注释掉\think\Error::register()相关拦截系统错误的php源码。

修改文件thinkphp/library/think/Error.php:

public static function register() {
   //error_reporting(E_ALL);
   //set_error_handler([__CLASS__, 'appError']);
   //set_exception_handler([__CLASS__, 'appException']);
   //register_shutdown_function([__CLASS__, 'appShutdown']);
}

苏南大叔:thinkphp5如何开启代码调试?如何拦截php系统错误信息 - 破坏error拦截
thinkphp5如何开启代码调试?如何拦截php系统错误信息(图6-6)

相关文章:

总结

这些方案各有千秋,大家根据自己的实际情况选择即可。更多thinkphp相关经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    thinkphp