zblog升级到1.7.3.3295后出现的问题记录

扫码手机浏览

今天登陆后台的时候,看到有升级提示,顺手点了一下升级,之后系统就无法正常访问了。

出现的故障主要有3条

1、https模式下,页面排版错位,切换到http地址能正常打开

2、网站设置显示古久信息,并且无法保存

3、模版无法切换成大白模版


故障分析

1、页面排版错位主要是在https模式下,由于浏览器安全设置,无法加载http地址的资源文件,但由于后台网站设置无法修改固定域名,直接修改zb_users/c_option.php中ZC_BLOG_HOST参数后可正常打开

今天登陆后台的时候,看到有升级提示,顺手点了一下升级,之后系统就无法正常访问了。

出现的故障主要有3条

1、https模式下,页面排版错位,切换到http地址能正常打开

2、网站设置显示古久信息,并且无法保存

3、模版无法切换成大白模版


故障分析

1、页面排版错位主要是在https模式下,由于浏览器安全设置,无法加载http地址的资源文件,但由于后台网站设置无法修改固定域名,直接修改zb_users/c_option.php中ZC_BLOG_HOST参数后可正常打开

2、我的上一个版本是1.7.3.3230,经过比对发现,本次提交的修改中zb_system\function\lib\zblogphp.php,1457行附近,LoadOption函数,

原来的

if (in_array($key, $reserve_keys)) {
                continue;
            }

被改成了

if (in_array($key, $reserve_keys) || isset($this->option_user_file[$key])) {
                continue;
            }

改完之后相当于站点配置信息以zb_users/c_option.php中为准,而在saveOption方法中,这个文件并不会被更新。就导致后台看到的网站设置无法被修改。

3、模版只要切换成大白模版,就会提示找不到mip_active函数。

mip是百度搞的一套移动端页面适配方案,21年mip就下线了。但是这个标准目前还有在用。而大白模版制作的时候,当时就使用了mip标准。在上一个版本,我的大白模版一直采用普通主题方式,也就是可以在后台进行切换模版的,一直可以正常使用。估计老版本没有严格运行模版内的钩子函数,也就是之前加在模版内的部分函数没有运行,所以不报错。升级后正常运行了,报错找不到该函数。mip_active这个函数在mip插件中。研究了一下,如果启用mip支持插件,模版要调整的地方太多了,而且mip插件和其它插件兼容性存在问题,所以弃用。


解决方案

1、将zb_system\function\lib\zblogphp.php的LoadOption函数1476行附近,

|| isset($this->option_user_file[$key])

去掉。

2、后台网站设置修改固定网址到带https的域名

3、将主题文件夹下的include.php的mip_active();注释掉。


zblog作为一家老牌的blog开源软件提供商,zx团队一直在默默的更新系统,非常的敬业。如果版本迭代能再谨慎点就好了。

另外,系统升级,请记得一定要备份代码。不然就会像我一样,出现问题只能查代码。