达到php的max_input_vars限制 - 但不知道为什么

时间:2017-08-07 20:20:07

标签: php multidimensional-array http-post settings

我似乎在我正在处理的PHP脚本中达到了max_input_vars的限制。我知道我可以增加限制(这是我在重构脚本时所做的)但我不希望这是最终解决方案。

我认为max_input_vars的工作方式是,数组的每个嵌套级别都会分配少量max_input_vars的元素。

假设$array1[999][999]的值设置为1000,那么诸如max_input_vars之类的二维数组就可以了。

但是,如果将$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

1 个答案:

答案 0 :(得分:1)

对于单个维度,每个数组元素都是它自己的变量:

array1%5B%5D=1 & array1%5B%5D=1

对于两个维度:

array1%5B1%5D%5B0%5D=1 & array1%5B2%5D%5B0%5D=1

如果设置为1000,则array1[999][999]会违反max_input_vars,因为array1[0][0]彻底array1[0][999]是1000个变量。在这种情况下,添加array1[1][0]会将其超过1000并生成:

  

警告:未知:输入变量超过1000.要在php.ini中增加限制更改max_input_vars。在第0行的未知中