Loading... 最近因为一些业务原因切了一下服务器,从 apache2.4 改成了 IIS8.5。 另外,PHP5.x 可能在今年年末听说官方将会不再维护了,所以升级了一下服务器到 PHP7,同时进行了大面积的网站改版。 一下子的全面更换让我忙上忙下,有好多东西要搞,也就不知道哪块可能会出问题了。IIS 和 PHP7 这块我都是第一次接触,要学的东西有很多。 前几天还是正常的注册等操作,今天突然不正常了起来。 起因是我想给我的页脚小工具菜单加上几个新链接,结果发现点击添加菜单项的时候,那个进度条转啊转的都转不停,我就觉得咦这是咋回事儿。因为今早上我升级后台插件或者发文章的时候都是正常的。 于是我换用实时预览的方式来添加菜单项,这次是添加上来了,但是点发布的时候,却报错,说服务器暂时无法保存啥啥的,让我待会儿再试。这样我就知道出问题了。 问题可能出现在 IIS 或者 PHP 上,感觉数据库不太可能,毕竟我都能登录后台,估计数据库的连接没啥问题。IIS 上我就不清楚不了解了,会不会是目录访问权限的问题呢,一想估计不是,毕竟我保存菜单等操作涉及到的是数据库,跟文件没有关系。 那前段时间我就换了 php7 了,那时候调试注册页面是没有问题的,现在咋出问题了呢。所以一开始我定位可能是 IIS 切换的有些配置有问题。虽然前台页面能浏览,但是可能无法注册用户等,登录应该是 ok 的,毕竟我能登录到管理后台。 于是我又去注册页面测试了一下,果然,在正确输入信息的情况下,无法获取验证码,抓了个包,发现给我提示了个 500 错误。我就知道应该是服务器哪块出错了。 于是我到 IIS 的后台,将网站的错误调试打开,再次抓包点击获取验证码按钮,发现具体的错误原来是来自于 PHP,是一串英文,不过我一看就明白了,说的就是 POST 的大小为 `76bytes`,但是 post 的最大限制提交长度为 `50bytes`,超过了限制,所以无法提交,报错。 照我过去的了解,post 能发送的长度是无限制的。不过这里竟然出现了最大长度,那也可能是别的什么程序之类的修改了我的 PHP 配置,因为我确信自己是没有改过这种数值的。 于是我来到我的 `php.ini` 文件中,搜索 “post_max_size” 这一行,发现的确进行了限制,内容确实是 50 开头的。因为这个限制设置成 0 是无限制,所以我尝试设置成 0,重启 php,发现确实如此,这次注册、保存菜单都没有问题了。 如果有其他站长遇到类似的情况也可以尝试来设置一下,希望对你们有帮助。 **补充:** 后来经过检查发现,可能是过去修改 `php.ini` 的时候不小心在某个位置打了个回车什么的,导致配置全乱套了,这一行的加载到那一行去,怪不得会出现这样的奇葩错误。 看来还是我的锅,修复方法也很简单,卸载现在的 php,然后重装一下,原始的配置文件就回来了,进行对应配置即可,`post_max_size` 的默认值为 `50M`,可能之前参数搞乱了所以只识别了 50,所以变成 `50bytes`,设置回默认值即可。 最后修改:2021 年 08 月 15 日 © 允许规范转载 赞 赠人玫瑰,手留余香