让人吃药的max_input_vars
程序员文章站
2022-04-05 18:45:52
...
在某个项目中,每次提交都丢了部分数据,觉得非常奇怪,开始的时候以为是数据量过大,但后来又觉得不应该,因为如果是数据量过大,要么就是提交失败,要么就是直接报错啊? 但事实上我每次提交都是成功的,但print_r($_POST)的时候,总丢了不少的数据,这是
在某个项目中,每次提交都丢了部分数据,觉得非常奇怪,开始的时候以为是数据量过大,但后来又觉得不应该,因为如果是数据量过大,要么就是提交失败,要么就是直接报错啊?
但事实上我每次提交都是成功的,但print_r($_POST)的时候,总丢了不少的数据,这是为什么呢?
于是,将http头中的form内容全部copy出来,查看了一下,发现共是1200多行。打印POST的时候,只有1000行,咦,这不科学啊?少了200多行?
google了一下,原来,PHP有这么一个配置:
;?How?many?GET/POST/COOKIE?input?variables?may?be?accepted?? ;?max_input_vars?=?1000??
而它的默认值 是1000,好吧,如果不是这次意外,根本不会发现项目中存在的这个BUG,毕竟要提交1000多个参数还是有难度的。顺便说一下:param[]=1¶m[]=2是属于两个参数。所以如果你提交的项目中有多个数组,每个数组又有不少值的话,你就真的要小心了
手贱,将max_input_vars 改成5000,问题解决。。
------
回顾,这种因为偷懒的事情往往出现在哪里呢?
1、ajax提交,不管三七二十一,将某堆数据 serializeArray(),jquery的这个功能,偶尔真心会让人吃药。
2、日程管理和广告排期管理,这时候input的key确实 有可能会超过1000,但我还是建议先序列化再存到一个字段提交更安心 吧?
------
OVER
原文地址:让人吃药的max_input_vars, 感谢原作者分享。