在hostgator的vps上测试网站,遇到一个关于菜单的奇怪问题。当菜单项数量很多时,保存菜单时末尾的几项会丢失,连菜单位置的设定也没了。

具体的说,我创建了一个菜单,大概有80多个菜单项,这80多个是直接用WordPress import工具导入的测试数据。但当我想修改菜单,增加几项时,问题就来了,只要多加一个,排在最后的菜单必定会消失一个,连菜单位置的设定也没了,导致无法增加更多的菜单项。

google了一下,发现答案,原来是服务器问题,php 5.3.9后增加了一项叫做max_input_vars,默认值1000,即表单一次可以提交1000个变量。超过了怎么办,只能被截断,也就是说传到WordPress的数据早就被服务器截断了,丢失了,WordPress只能对着残缺不全的数据哑巴吃黄连。

具体的原因在这篇文章中,写的相当详细,我就不重复了,直接说说我是怎么解决的。

拷贝一份php.ini,放到wp-admin目录下,在php.ini里加上这几项,问题就可以解决,放到网站根目录下只能改变前台的设置,影响不到后台。

max_input_vars = 2000
suhosin.post.max_vars = 2000
suhosin.request.max_vars = 2000

虽说max_input_vars是从php 5.3.9开始有的,但我用的是php 5.3.28,也有这个变量。如果遇到这个问题,php版本又没到5.3.9,php.ini里也没这项,直接加上就好。

12条留言

  1. 我的菜单很多很多,如何修改? 按你的方法修改后还是不行。方便加QQ吗?

      1. 求付费解决QQ43512146

        1. 建议你直接问hosting,不同hosting设置不同,付费给人做到最后还的问hosting给了哪些权限。
          你只需要问hosting,想给wp-admin目录下的文件更改php.ini设置,把具体设置发给他们,一般会帮你改的。

  2. 我的还没处理好,请问怎么拷贝php.ini啊?谢谢!

    1. 你直接问hosting就行,因为每个hosting的给的权限不同。比如hostgator直接去cpanel里生成一份php.ini,就能在根目录下找到,然后拷贝到相应目录就行。有些hosting则不允许个人修改php.ini,但他们或许可以帮你改。

      1. 拿到了php.ini,是直接添加到[PHP]后面吗?试了几次都没能解决啊,我的网站只能添加8个菜单,多了就出现页面找不到的500错误,请问这是应该怎么解决呢?O(∩_∩)O谢谢

      2. 请问把
        max_input_vars = 2000
        suhosin.post.max_vars = 2000
        suhosin.request.max_vars = 2000
        添加到php.ini哪里啊?试了很多次都不行。求救!!!

        1. 你先在php.ini里搜索一下max_input_vars,post.max_vars以及request.max_vars,里面可能已经有这三个设定,你只需要改一下值。另外php.ini要放到wp-admin目录下

  3. 感谢,修改好了。省去了自己Google的麻烦 🙂

评论功能已关闭