首页 > 文章列表 > 相关知识 > 查看文章

nginx环境下iwebshop后台打开出现502错误问题的解决方法

所属分类:相关知识 来源: 丁老师原创 更新时间:2017-10-13 12:44 IP属地: 深圳

在nginx环境下,iwebshop后台有时打开一些页面时会出现502错误,经过对nginx日志和php-fpm的分析,排除了是环境问题,最后重回到了iwebshop身上。


经过了不断的查询和分析,发现lib\core\util\urlmanager_class.php的getRefRoute方法有对HTTP_REFERER进行判断处理,再根据getRefRoute方法查找,最重确定在classes\menu.php文件,其中有一句,$lastInfo = IUrl::getRefRoute();,往下走,ISafe::set('lastInfo',$lastInfo);,这句话的意思是对session的lastInfo设置HTTP_REFERER路径,经过分析发现,因为iwebshop的session机制里有对字符串进行安全验证,所以session里包括?%等非法字符都会阻止通过。像iwebshop后台有很多分页,或是查询等待有条件参数的链接,通过这些链接再进入其他url时,就会出错,而导致nginx 502错误。


因为所用iwebshop版本改动有点大,所以就不对safe_code进行处理了。


解决办法:



直接在menu.php中,ISafe::set('lastInfo',$lastInfo);这句话进行注释,也就是说不要在session里设置lastInfo了,lastInfo是在获取菜单的时候,根据session判断如果来路url如果存在,就跳转过去,没什么用,直接屏蔽就是了。


补充:

对lastInfo注释后发现,点击链接后左侧测菜单不能根据所属分类而显示了,比如我选择的是编辑会员,但是左侧就显示的是新闻这些,看来还必须要用到lastInfo来记录历史信息。所以取消注释,在对lastInfo的判断上把非法字符过滤了就可以了。修改后的代码如下:

$lastInfo=explode("?",$lastInfo);
ISafe::set('lastInfo',$lastInfo[0]);
return self::get($menu,$lastInfo[0]);

dls6.jpg

相关文章

OJS配置多域名后访问打开400 Bad R...

OJS系统可以配置多域名来绑定对应的期刊,但是有用户反应,在配置了多域名后,打开域名后网站报...

CodeIgniter上传提示upload ...

在开发CodeIgniter的上传功能时,提示uploadpathdoesnotappear...

IntelliJ/phpstorm/webs...

在使用jetbrains的ide开发代码时,经常性的会输入单引号或双引号,ide默认有对于引...

重庆微信小程序开发

重庆微信小程序开发

推荐文章

丁老师软件推出图片在线加水印功能

丁老师软件,推出图片在线加水印功能,支持图片和PDF文件加水印,可以添加文字水印、图片水印,...

网络产品营销有哪些好的方法?

现在的市场营销,基本上网络营销是直接、快速、精准、有效的通道,一款优秀的产品,接合网络和线下...

宝塔面板phpmyadmin数据库表导航树禁...

宝塔面板的phpmyadmin,默认数据库表导航树是每30个一页,非常的不直观,可以通过修改...

微信小程序提示“手机号快速验证组件”资源包用...

微信小程序自2023年8月起,开始对《手机号快速验证组件》进行收费,每个小程序有1000次的...

QQ咨询 微信咨询 电话咨询