我有一个大表单,我可以从firebug看到所有元素的值都正确发送,但是当我print_r($ _ POST)时,只显示了1000个变量。我的max_post_size设置为25M所以我知道这不是问题,我通过我的php.ini搜索了诸如'post'和'max'之类的关键字,我没有找到任何东西。
1000只是我传递的元素的1/4左右,所以这对我来说是一个非常大的问题,我非常感谢我能得到的任何帮助。
答案 0 :(得分:35)
我看到你在这里做了什么。
max_input_vars, 1000
为了防止哈希冲突攻击而引入: http://www.phpclasses.org/blog/post/171-PHP-Vulnerability-May-Halt-Millions-of-Servers.html 但在5.3.9中失败了: http://www.phpclasses.org/blog/post/175-Another-Serious-Security-Bug-on-PHP-539.html 因此,如果出现问题,您应该更新到5.3.10+。
答案 1 :(得分:7)
使用PHP v5.4.20,我有1000个变量限制的完全相同的问题。即使php.ini文件没有包含任何这样的'max_input_vars'行,我只是在顶部[PHP]部分找到了一个方便的位置插入它,添加了行'max_input_vars = 10000',重新启动了Apache,一切都解决了
答案 2 :(得分:6)
我有类似的情况;我只能发布数组的前1000个元素。
我的解决方案是将implode()
数组转换为一个长字符串,并将explode()
放在服务器端。
json_encode()
可能也可以。