我在页面上有大量的输入元素,应该通过ajax提交给服务器。
我已经创建了一个数组并试图发送它,但我有一个php警告:“你的PHP配置限制了在表单中发布的最大字段数:1000 for max_input_vars”
所以,我决定绕过这个警告并将我的所有巨大数组修改为序列化字符串。结果 - 警告消失,但我在服务器端获取截断的数据。
P.S。在这两种情况下,可以通过增加max_input_vars变量来解决问题。但在第二个数据中截断parse_str($_POST['data'], $data)
函数!
为什么在我尝试解析一个巨大的字符串时会应用“max_input_vars”的限制?
答案 0 :(得分:3)
“max_input_vars”设置的副作用是parse_str()。此函数也受max_input_vars指定的限制 - 这没有明确记录。
甚至PHP的父亲Rasmus Lerdorf也认为这是unintuitive。
答案 1 :(得分:2)
您可以在php.ini
中进行更改。默认限制为1000.这是手册所说的。
可以接受多少输入变量(限制分别应用于$ _GET,$ _POST和$ _COOKIE superglobal)。使用此指令可以减少使用哈希冲突的拒绝服务攻击的可能性。如果输入变量多于此指令指定的输入变量,则会发出E_WARNING,并从请求中截断其他输入变量。此限制仅适用于多维输入数组的每个嵌套级别。
所以基本上它适用于每个嵌套级别。
如果不是这种情况,那么请尝试检查post_max_size
,这也可能会截断所发布内容的长度。