PHP max_input_vars

use*_*653 79 php

我收到一条max_input_vars错误消息.

我知道有一个php.ini设置可以从版本5.3.9开始改变这个,但是,我正在运行版本5.1.6.

当我查看5.1.6服务器的配置信息时,它显示的max_input_vars值为1000.

我的问题是:即使我正在运行5.1.6,我也看到了这个设置,phpinfo()但它不在php.ini文件中.这是否意味着该值在此版本的PHP中是硬编码的,无法更改?

lub*_*sdz 96

PHP网上的参考:

http://php.net/manual/en/info.configuration.php#ini.max-input-vars

请注意,您不能在运行时使用函数设置此指令ini_set(name, newValue),例如

ini_set('max_input_vars', 3000);
Run Code Online (Sandbox Code Playgroud)

不起作用.

如文档中所述,该指令只能按目录范围设置,即通过.htaccess文件,httpd.conf或.user.ini(自PHP 5.3起).

请参见http://php.net/manual/en/configuration.changes.modes.php

将指令添加到php.ini或将以下行放入.htaccess将起作用:

php_value max_input_vars 3000
php_value suhosin.get.max_vars 3000
php_value suhosin.post.max_vars 3000
php_value suhosin.request.max_vars 3000
Run Code Online (Sandbox Code Playgroud)

  • 或者将所有3个suhosin指令放在php.ini上即可. (3认同)

Nar*_*arf 45

你可以将它添加到php.ini,它应该工作 - 只是在PHP 5.3.6上测试它.

  • @Vaughany 请注意,如果您在 bitnami 堆栈上,则必须重新启动 php-fpm 以防您正在使用它。在对 /opt/bitnami/php/etc/php.ini 进行更改后,简单地重新启动 apache 将无济于事,甚至可能不需要 (2认同)

Vau*_*any 20

刚刚尝试使用5.3.3进行此修复,并且没有任何变化.谷歌搜索我发现这个网页http://anothersysadmin.wordpress.com/2012/02/16/php-5-3-max_input_vars-and-big-forms/详细说明了如果您的服务器使用Suhosin补丁需要更改的其他设置Debian下的哪个Apache.

该网站解释说:

所以,如果你想将这个数字从默认数字1000增加到3000,那么你必须在php.ini这些行中输入:

max_input_vars = 3000 suhosin.post.max_vars = 3000 suhosin.request.max_vars = 3000

我测试了它(在/ etc/php5/apache2和/ etc/php5/cli中添加了设置到php.ini,并成功重启Apache)但在phpinfo中仍然没有max_input_vars变量.

一些站点指向PHP 5.3.9作为此更改将采用的第一个PHP版本,所以我的错误首先不是正确的RTM,尽管我有兴趣看到人们报告它在5.3.3以上版本中工作但低于5.3.9.


nok*_*eng 11

现在是 2018 年。当我必须发送超过max_input_vars. 我想出了一个解决方案,像我这样的新手在更改max_input_vars参数后忘记重新启动 php fpm 服务。因为我只尝试重启apache2服务,而不是 php fpm

  1. 取消注释代码/etc/php/7.0/fpm/php.ini并根据需要设置数字
    max_input_vars = 4000
  2. 重新启动 php fpm 服务,因为我使用的是 php 7。因此,
    sudo service php7.0-fpm restart

希望它有助于
测试Debian Stretchphp7.0

  • 我浪费了一整天的时间试图弄清楚如何确保应用更改并阅读了这么多解决方案。他们都提到在更改 php.ini 后应该重新启动 apache,这没有什么区别。按照此解决方案中的说明重新启动 php7.2-fpm 解决了问题! (2认同)

Ole*_*huk 8

你需要在php.ini文件中取消注释max_input_vars值并增加它(exp.2000),也不要忘记重启你的服务器这将有助于99,99%.


小智 5

使用此指令可以降低使用哈希冲突的拒绝服务攻击的可能性。如果输入变量多于该指令指定的数量,则会发出 E_WARNING,并且会从请求中截断更多输入变量。

我建议不要扩展默认值 1000,并通过序列化请求或按块发送请求来扩展应用程序功能。否则,您可以将其扩展到所需的配置。

它肯定需要在 php.ini 中设置


小智 5

将此行放在您网站的.htaccess文件中

php_value max_input_vars 6000 
Run Code Online (Sandbox Code Playgroud)