php / 未分类 · 2016年7月11日

max_input_vars设置get/post最大项数

post设置max_input_vars
max_input_vars设置get/post最大项数
官方的手册的说明
max_input_vars 1000 PHP_INI_PERDIR 自 PHP 5.3.9 起有效
http://php.net/manual/zh/info.configuration.php
max_input_vars 的影响
一同事,让帮忙解决问题:post了1000条数据,结果只显示250条。
于是 改为 
sudo su
cp /etc/php.ini php.inibak
sed -i '389amax_input_vars = 10000' /etc/php.ini
/etc/init.d/php-fpm reload

下面是别人遇到的情况
判断可能是php的post设置问题,结果发现php.ini里关于post的设置没有问题。
通过 php://input 得到请求参数是完整的,就是在装入$_POST全局变量时有问题。
本以为很简单解决的问题,找了一个小时的原因。后来查看php这一部分源码看到这句代码:
if (++count > PG(max_input_vars)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, “Input variables exceeded %ld. To increase the limit change max_input_vars in php.ini.”, PG(max_input_vars));
return;
}
猛然间想起来,php5.3.10在解决hash冲突受攻击时,增加了一个配置指令max_input_vars。php.ini中增加这个指令的值即可。
其实,调试时打开php错误报告级别也可以看到有错误提示的。
绕了一大圈。
其它参考 
http://54im.com/php-2/php-max-input-vars-default-value-1000-fail-post-form.html