在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]);
由老版本7.2自动升级时,会出现很多问题,建议在终端手动升级。升级命令:curlhttp:/...
宝塔系统相关问题解决方法
适用于ecshop的微信文章采集插件包
问题描述:在使用iframe的框架系统中,左侧菜单,右侧为iframe页面区域,由左侧的菜单...
fastadmin里自定义按钮的btn-dialog,弹出窗口时默认大小,设置了data-a...
phpstorm程序中,在打开html时总会出现对style属性的折叠和隐藏,这样在检查代码...
在php代码中,遇到复杂的sql语句,需要拼装sql语句,如:$sql='id 10...
windows11更新后,不管是桌面的右键,还是文件上点右键,都非常地别扭,而且也非常的卡顿...