【发布时间】:2018-01-15 05:48:10
【问题描述】:
在我正在处理的 PHP 脚本中,我似乎达到了 max_input_vars 的限制。我知道我可以增加限制(我在重构脚本时这样做了),但我不希望这成为最终解决方案。
我认为max_input_vars 的工作方式是为数组的每个嵌套级别分配的元素数量少于max_input_vars 的值。
因此,假设max_input_vars 的值设置为 1000,那么像 $array1[999][999] 这样的二维数组就可以了。
但是,如果将二维数组(例如 $array2[1010][2])设置为 1000,则会违反该值。
我的理解正确吗?如果没有,这个设置是如何真正起作用的?
为了完整起见,我的 POST 字符串如下所示:
注意:我从我的浏览器检查器中复制了这个,位于请求的“表单数据”部分下。我获取了 URL 编码值并通过parse_str 传递它以使其可读。
array(172) {
["line_1"]=>
string(11) "1_85021_1_2"
["line_2"]=>
string(11) "1_85038_1_2"
...
["line_167"]=>
string(11) "1_85077_1_2"
["QUANTITY"]=>
array(167) {
["1_85021_1_2"]=>
string(6) "118685"
["1_85038_1_2"]=>
string(6) "237520"
...
...
}
["DATE1"]=>
array(167) {
["1_85021_1_2"]=>
string(0) ""
["1_85038_1_2"]=>
string(0) ""
...
...
["SPLIT"]=>
array(167) {
["1_85021_1_2"]=>
string(1) "2"
["1_85038_1_2"]=>
string(1) "0"
...
...
}
["DATE2"]=>
array(166) {
["1_85021_1_2"]=>
string(0) ""
["1_85038_1_2"]=>
string(10) "08/08/2017"
...
...
}
["COMMENT"]=>
array(166) {
["1_85021_1_2"]=>
string(0) ""
["1_85038_1_2"]=>
string(6) "test21"
...
...
}
对于冗长,我得到的确切错误在这里:
PHP Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0
【问题讨论】:
-
最好的办法是将数据打包成 JSON 并将其作为一个输入变量传递。
-
是的,这不是一个坏主意。我可能会继续这样做。但是,我仍然很好奇为什么我所拥有的东西不起作用(假设
max_input_vars按我认为的方式工作。如果没有,我非常想了解它是如何工作的。 -
max_input_vars是多个输入变量,可以是标量或数组。默认情况下为 1000,您可以拥有 1000 个数组或 1000 个字符串 - 没关系。不过重要的是post_max_size,默认情况下为 8MB(所有数据总计)。 -
不知道为什么这被否决了。如果您能告诉我如何改进这个问题(以及随后的问题),我们将不胜感激。
标签: php multidimensional-array http-post settings