今天遇到一个客户的zblog站点发布文章提示成功,但是并没有保存。文章管理里面并看不到刚刚发布的文章。
遇到这种问题第一要排除是不是主题或者插件造成的,所以进入客户网站后台第一件事就是把主题切换到默认主题,然后一个一个的关掉插件排除测试,最后发现就算把所有插件都关掉了主题也是默认主题,问题依然存在。同时把程序升级到最新版,并校验了系统核心文件也没有发现问题;
然后开始检查权限,进服务器后台查看文件夹权限都是755是正常的,而且新建分类和新建tag都一切正常,删除文章和修改文章都可以,那么又可以排除掉文件夹权限造成的问题。
接着开始排查文章函数,zblog发布文章的核心函数是”PostArticle()“,在”zb_system/function/c_system_even.php“文件里面,这个函数里面有两个接口,把两个接口都删掉之后测试依然不起作用,那么就彻底排除了是主题或者插件造成的问题。
最后就要排查数据库了,但是客户服务器的phpmyadmin打不开,端口被关闭了。只能在应用中心下载了个”数据库管理“插件打开看,用插件看并没有发现文章表”zbp_post“有什么问题,一切正常。
到了这步已经没啥好排查的了,在我怀疑人生后一分钟后及时去咨询了群里大佬,大佬都表示应该是数据库问题!
重点排查数据库!
还好客户在服务器里面已经安装了一个”Adminer“,用Adminer连上数据库打开”zbp_post“发现了问题,一个插件在”zbp_post“表里面新增了一些字段,但是关掉这跟插件后这些字段并没有被删除。
坑爹的是后台安装的数据库管理插件里面并看不到这些新增的字段,好累。
把字段对应的插件启用后问题解决,可以正常发布文章了。
PS:如果你的问题跟我描述的一样,可以新建分类新建tag删除文章修改文章,就是不能发布文章,那么大概率就是跟我这次遇到的问题一摸一样。问题原因就是:安装了某些插件之后在文章表里面新增了字段,你某天关掉了这个插件,然后问题就出现了!
解决办法:如果你能及时察觉到是哪个插件造成的,重新启用插件即可解决问题,但是也要及时去跟插件作者反馈下此问题。
如果你不能及时察觉是哪个插件造成的,那么就需要你打开你的数据库,重点看”zbp_post“这个表,这个表默认只有下图里面的17个字段:
zblog新版又加了”log_CreateTime“和”log_UpdateTime“两个新字段,现在一共是19个默认字段。
除此之外多出来的字段就是问题的原因所在了,另外你看不懂这个字段是哪个插件生成的请截图发官方论坛即可。
总结:排查问题好累,有些时候距离问题解决可能就差点运气...