我爱帮助网--QQ交流群号

Nas交流与矿渣群(unraid 群晖 猫盘 蜗牛等):372167400         物联网/智能家居群:518812757             帮助教程:手册大全

软件使用与建站群:1057308983      虚拟化交流群:13448651

蝉知的多级导航菜单保存不了(保存后丢失)的解决过程

2020-03-07 17:32:00
zstmtony
原创
2270


蝉知的导航保存不了(保存后丢失)的解决过程---别都甩锅给蝉知官方




今天对蝉知网站导航进行修改,增加了几个二级导航,但发现奇怪的是增加几个导航菜单后,保存明明提示正常,但再打开后台导航,发现刚添加的导航菜单丢失了

打开前面网页也看不到新的导航菜单。


一、出现问题症状如下


   1. 保存不出错,但后台导航再打开,刚才添加的导航项目丢失
   2. 前台 也找不到刚添加的导航项目


   如下图所示

 


二、解决办法及处理过程 


1)先怀疑是否自己操作错误。逐个排除其它因素干扰


a.再尝试重新添加导航菜单项,再次保存

b.重启服务器的web服务及mysql 

c.将菜单项添加到导航 根节点及 二级节点 均失败

d.删除部分已有的导航菜单,再添加新的,成功,但再继续添加,又失败了


      做了如下几种尝试均未找到原因


2)是否数据库中导航配置表中的字段容量不够大(字段类型容纳不了太长的或太多层级的导航内容)


    通过前面的规律分析,猜测蝉知的导航可能有一个长度或层级数的限制。我先直接打开蝉知的后台mysql数据库,先找到导航是保存在表eps_config中

    设置节(section) 是nav, key是desktop_top , 可看到它的值是一个json 内容,且为了保证能够在多语言环境正常显示,内容进行了unicode 编码。

 

   可以将这个内容 使用在线json工具来查看( 如果想看到中文内容 ,还需要将内容进行unicode 转中文)

   可看到这个导航是一个json树结构

   

   我分析了每个节点是正常的。

   但为什么会保存不了呢


   先进行第一步尝试,修改数据表字段的数据类型

   将这个value字段由 text 改为 mediumtext 或 longtext


  重新再启动网站,发现故障如旧, 依旧没有解决

  这时有些怀疑可能是蝉知系统的一个bug ,一边与蝉知 官方沟通,但因为是周末,技术人员未在线,只好继续自救。


3)打开debug 为 true ,进入调试模式,查找出错日志


再进行第二次尝试,将网站改为debug模式运行, 修改方法如下

如何做代码调试,查找错误
修改chanzhi/system/config/my.php里的debug参数值为true。重新访问页面看有什么报错信息。
日志在chanzhi/system/tmp/log目录下,php开头的是php错误,sql开头的是sql语句。

再运行网站,并进入后台修改 导航内容,保存不出错,但进入服务器 找到 chanzhi/system/tmp/log目录下的php开头的日志文件,发现有不少错误


To increase the limit change max_input_vars in php.ini. in Unknown on line 0 when visiting /admin.php?m=nav&f=admin

15:49:03 Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0 when visiting /admin.php?m=nav&f=admin

15:49:42 Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0 when visiting /admin.php?m=nav&f=admin
 
这说明可能并不是数据表的字段大小限制,而是php执行的传递的参数大小限制,造成保存时传递的数据被截断了


问题找到了,就好解决了


以下是解决办法(解决问题比找到问题简单多了):

1. 直接找到php.ini 修改里面的参数 max_input_vars

    这个参数 默认值是 max_input_vars  = 1000

2. 将其改为 max_input_vars = 2000 

3. 保存退出

4. 并重启 PHP


再进入蝉知后台 修改 导航,保存,一切都正常了, 完美解决。 


四、总结 


1. 不能把所有的锅都甩给蝉知,先找找自己的问题。

2. 遇到问题,先查找官方的知识库,从前人的经验中找到解题的思路,减少自己摸索的时间。

3. 进入debug调试方式, 这个是最好的找到问题的办法。跟软件开发中的debug 道理 是一样的。

4. 任何bug和新冠病毒一样,总会留有蛛丝马迹,根据日志向上追溯,总能找到解决的方案。



五、相关阅读 


  更多蝉知相关原创技巧https://www.52help.net/chanzhi.html

0
发表评论
评论通过审核后显示。
文章分类
联系我们
联系人: 王先生