thinkphp开启debug的同时,如何不对外显示错误信息?
发布于 作者:苏南大叔 来源:程序如此灵动~本文还是接着说最近接到的这个老的thinkphp
系统的事情啊,这个系统是基于thinkphp@3.2.3
的,很古老了不是?所以,也是有一定的风险的。所以,黑客兄弟也是盯着这个系统一直在鼓捣。
大家好,这里是苏南大叔的“程序如此灵动”博客,本文讲述如何既开启debug
,又对外不显示thinkphp
的错误信息。测试环境:php@5.6
,thinkphp3.2.3
。
为啥不关闭debug
由于兼容性的问题,一旦关闭上面的这个变量,页面上的小错误,也会导致500错误,连正常的页面也不能显示了。但是一旦开始debug
,这些错误都会被捕捉处理。很奇怪对吧?这里并不细究这个问题。反正,就是在这个项目中,APP_DEBUG
变量必须要开启的意思。
index.php
:
define("APP_DEBUG", true);
// ...
但是,这样的话,会出现一个新的问题。就是如果访客恶意输入一些网址的话,就会显示一些错误信息,有暴露服务器私密信息的嫌疑。如下图所示:
这些都是黑客们最喜爱的报错信息...
修改默认exception
页面
上述异常报错页面,其实也看不出太详细的错误信息,还不如/data/runtime/logs/
里面显示的更加详细。所以,这里可以配置一下这个exception
页面。
thinkphp
的默认路径是:/Public/exception.tpl
。thinkcmf
的默认路径是:/public/exception.html
。
当您阅读这篇文章的时候,上述默认路径很可能已经发生了变化,不要抱怨,使用关键词搜索大法可以快速定位您想要的任何页面。请自己去定位页面位置,这个操作非常简单。
修改exception
页面路径
这个exception
页面位置是由这个变量TMPL_EXCEPTION_FILE
定义的。所以,您可以在config.php
里面直接修改这个变量。具体的情况具体分析,如下的语句是范例。
修改路径的前提也是:修改了异常报错信息的模板。否则达不到本文中所描述的隐藏报错信息的目的。
array(
'TMPL_EXCEPTION_FILE' => SITE_PATH . 'public/exception.html', //thinkcmf
'TMPL_EXCEPTION_FILE' => './Public/exception.tpl', //thinkphp
//...
);
参考文献
- https://newsn.net/say/thinkphp5-debug.html
- https://newsn.net/say/thinkphp-log.html
- https://newsn.net/say/thinkcmf-debug.html
结束语
thinkcmf
基于thinkphp
,thinkphp
有个APP_DEBUG
的开关变量,还有个TMPL_EXCEPTION_FILE
变量,可以修改默认的异常页面来达到隐藏敏感信息的目的。
下面的链接,是苏南大叔写的一些有关thinkcmf
的文章,欢迎点击:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。