我的测试服务器上有一件奇怪的事情:我将max_input_vars
设置为仅100
,并发送了包含over 100
元素的巨大请求
我使用过:
$num=count($_REQUEST, COUNT_RECURSIVE);
$max=ini_get('max_input_vars');
if($max - $num<50) {
die('Number of requests ('.$num.') near the maximum allowed value of max_input_vars:'.ini_get('max_input_vars'));
}
但我收到错误
为什么只有90?请求数
(90)
接近允许的最大值 max_input_vars:100
不应该是100还是99?
如果我设置更高的限额,准确地说,我会在 _REQUEST 美元中获得 240 个 vars:
- $_GET: 1
- $_POST: 239
- $_COOKIE: 1
max_input_vars 不计算子数组容器,而 count($a, COUNT_RECURSIVE) 计算,因此您必须使用递归循环:
$count = 0;
array_walk_recursive($_REQUEST, function($v) use(&$count) {
if(!is_object($v)) ++$count; //or if(is_string($v))
});