在使用帝国cms时,后台登录后突然变为空白页,没有任何错误提示,且没有错误日志。本文介绍其处理方法之一。
经过
晚上11时左右,在调整帝国后台编辑器时,突然发现后台完全空白。重新登录时,完全空白。这个现象是突发的,我个人在修改的js文件,怎么会突然影响网站后台呢?百思不得其解。
探究
- 恢复了正在修改的js文件,无效。
- 查看/e/config/config.php 未发现异常,文件未改动。
- 打开php.ini的display_error,打开config.php中的sql错误显示和错误提示显示,无效,依然空白。
- 突然想到手机端还有一个独立的后台,尝试了登录一下,也是空白。
- 仔细查看apache错误日志,php只报了一些warning级别的,没有fatal。
- 查看了mysql的运行状态,没有异常。
这就有意思了,竟然没有任何错误提示。
所以我只能怎么做呢,只能用最古老最白痴的,中断式排查。
通过探索登录过程中涉及的文件,发现/e/class/connect中,代码走到DoSafeCheckFromurl();函数,就停了。
那么根据这个文件名,很明显,是在检查后台来源网址,记得在config.php中见过一个类似的配置项。
解决
编辑/e/config/config.php中
$ecms_config['esafe']['ckfromurl']=0; //是否启用来源地址验证,0为不验证,1为全部验证,2为后台验证,3为前台验证,4为全部验证(严格),5为后台验证(严格),6为前台验证(严格)
设置为0
故障解决。
思考
其实这个问题,是挺尴尬的。我认为应该是服务器防火墙的问题。
服务器的防火墙,可能认为该站点正在遭受cc攻击,它可能做出了一定的防护,主要是跳转式的防护,导致帝国cms的来源地址验证失效,产生了如此闹心的问题。
一个没有输出错误提示的错误,让我熬夜写了这篇解决方案。希望能给后来者节省时间。