在生产环境中,一个巨大无比的form,包括三张图片,几百个输入框,近一千个checkbox,在用post方法提交到后台时,数据被拦腰截断。在生产环境中,一个巨大无比的form,包括三张图片,几百个输入框,近一千个checkbox,在用post方法提交到后台时,数据被拦腰截断。一路打debug,发现php 拿到 $_post时,数据就不足。一开始以为是php中的post_max_size, upload_max_size的问题, 但是设成100m也不管用。后来又以为是apache 中的limitpostdate的问题,设大了之后也不管用。 后来在客户端装wireshark抓包,发现tcp包中间出现 tcp windows full,于是又以为是浏览器在tcp第二次握手的时候,没有正确传输总package size。直到最后, 在apache的error.log中发现, 出了如下错误:php warning: unknown: input variables exceeded 1000 原来php中默认post中的参数的个数是1000,超过部分会被自动扔掉。
调整下这个数值,比如我们设置为2000: 在php.ini中设置max_input_vars = 2000