事件:

废话不多说。POST的数据被截断(并没有报内存不足错误),造成这种现象有2种原因:

1、php.ini 中 post_max_size (默认 2M)

2、php.ini 中max_input_vars 限制了(默认1000个键值对。如果post提交的键值对超过1000,多余的键值对就会被截断)

PS: max_input_vars 这个配置项使用ini_set进行设置不会生效,必须要修改php.ini之后 重新reload才会有效。

        场景:

        今天同事遇到这个问题,搞的半天无法解决。我开始也以为是post的内容超过post_max_size。查看了下,原始内容大概38.8kb,这个数据按照PHP的映射到内存 差不多也就388KB的样子,远小于设置的8M,所以,可定不是这个的问题。我还专门 获得php原始post内容(file_get_contents(‘php://input’, ‘r’) ) ,获得原始数据和浏览器提交过来的数据就已经不一致了。这说明不是程序的问题,就是服务器出了问题。

最后,看了下提交的内容,总共提交了1495对减值对。这个值已经大于了php.ini中max_input_vars默认值 1000.  最终,修改php.ini,重启服务器,重试,ok了。。。。