thinkphp5如何开启代码调试?如何拦截php系统错误信息
发布于 作者:苏南大叔 来源:程序如此灵动~本文中,苏南大叔说的是正统原版的thinkphp
如何开启调试模式,主要目的是:要显示完整的报错信息。在苏南大叔的往期文章中,苏南大叔有过类似的描述。但是,都是基于某个相关开源代码(例如thinkcmf
)的。目前,本文中,苏南大叔的例子是:最原始的thinkphp5
框架,不掺杂外加的其他逻辑。
默认情况下,thinkphp
会拦截相关的错误信息,导致调试过程受阻。如果显示完整的php
报错信息的话,还是非常有利于代码调试过程的。但是,一定要注意:在线上环境,一定不能暴露详细的报错信息。
测试环境:mac
/thinkphp@5.0.24
。
方案一:修改.env
文件 (推荐)
修改.env
文件这个方案,是thinkphp
官方推荐的。不过,苏南大叔却不是太喜欢。主要是,可能会有傻运维给配置配错了根目录,然后.env
文件又默认可以下载.... 当然,99.99%的时候,并不会出这些问题。但是,苏南大叔就是有些担心。
根目录下的.env
文件如下:
app_debug = true
参考文章:
方案二:修改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,
];
应该注意的是:此方法没有.env
文件配置,级别高。也就是说.env
文件里面如果进行了配置的话,其优先级是高于application/config.php
的。
方案四:破坏系统错误拦截功能
如果,无论如何上述几个方案配置都失效的话,这里有个王牌方案,一般情况下,并不推荐使用。那就是修改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']);
}
相关文章:
- https://newsn.net/say/php-set_exception_handler.html
- https://newsn.net/say/php-set_error_handler.html
- https://newsn.net/say/php-set_error_handler-2.html
- https://newsn.net/say/php-error-exception.html
总结
这些方案各有千秋,大家根据自己的实际情况选择即可。更多thinkphp
相关经验文章,请点击:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。