现在的位置: 首页 > 综合 > 正文

Centos+PHP 大form用post方法传递数据丢包

2014年01月25日 ⁄ 综合 ⁄ 共 742字 ⁄ 字号 评论关闭

                昨天夜里生产环境出了个bug, 一个巨大无比的form ,包括三张图片, 几百个输入框,  近一千个checkbox,

                       在用post方法提交到后台的时候, 发现数据被拦腰截断。

               一路打debug, 发现PHP 拿到 $_POST的时候,数据就不足。

               一开始以为是php中的post_max_size, upload_max_size的问题, 但是设成100M也不管用

               后来又以为是Apache 中的limitpostdate的问题,设大了之后也不管用。

 

               后来在客户端装wireShark抓包, 发现tcp包中间出现 TCP WINDOWS FULL, 于是又以为是浏览器在TCP第二次握手的时候, 没有正确传输总package size。

               又看到人说是CentOS中的Tcp package size的设置的问题。

 

               直到最后, 在Apache的error.log中发现, 出了如下错误

                                                   PHP Warning: Unknown: Input variables exceeded 1000

              一查,原来PHP中默认post中的参数的个数是1000, 超过部分会被自动扔掉。操!!!!!!!!!!!!

             对应方法很简单,

                     在PHP.ini中设置 max_input_vars = 2000

             

以上,蒋彪@南京

 

 

抱歉!评论已关闭.