我收到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中是硬编码的,无法更改?
答案 0 :(得分:92)
PHP网上的参考:
http://php.net/manual/en/info.configuration.php#ini.max-input-vars
请注意,您无法在运行时使用函数ini_set(name, newValue)
设置此指令,例如
ini_set('max_input_vars', 3000);
它无效。
如文档中所述,此指令只能按目录范围设置,即通过.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
答案 1 :(得分:41)
你可以将它添加到php.ini并且它应该可以工作 - 只需在PHP 5.3.6上测试它。
答案 2 :(得分:19)
刚刚尝试使用5.3.3进行此修复,并且没有任何变化。谷歌搜索我发现这个网页http://anothersysadmin.wordpress.com/2012/02/16/php-5-3-max_input_vars-and-big-forms/详细说明了其他需要更改的设置,如果你的服务器使用的是Suhosin补丁,那么Debian会使用它。
该网站解释说:
因此,如果您想将此数字增加到默认值,例如3000 数字是1000,你必须把这些行放在你的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。
答案 3 :(得分:8)
你需要在php.ini文件中取消注释max_input_vars值并增加它(exp.2000),也不要忘记重启你的服务器,这将有助于99,99%。
答案 4 :(得分:3)
使用此指令可减轻使用哈希冲突的拒绝服务攻击的可能性。如果输入变量多于此指令指定的输入变量,则会发出E_WARNING,并从请求中截断其他输入变量。
我建议不要扩展默认值1000,并通过序列化请求或按块发送请求来扩展应用程序功能。否则,您可以将其扩展到所需的配置。
它肯定需要在php.ini中设置
答案 5 :(得分:2)
请注意,您必须将其放在文件" .user.ini"在Centos7而不是" php.ini"曾经在Centos6工作过。你可以把" .user.ini"在任何子目录中,以便只影响该目录。
.user.ini:
max_input_vars = 3000
在Centos7和PHP 5.6.33上测试。
答案 6 :(得分:2)
现在是2018年。当我必须发送超过max_input_vars
的请求时,我就陷入了这个问题。我提出了一个解决方案,像我这样的新手在更改max_input_vars
参数后忘记重启php fpm服务。因为我只是尝试重新启动apache2
服务,而不是php fpm
/etc/php/7.0/fpm/php.ini
取消注释代码并根据需要设置数字
max_input_vars = 4000
sudo service php7.0-fpm restart
希望有帮助
在Debian Stretch
,php7.0
答案 7 :(得分:1)
php_value max_input_vars 6000
“将此行放在您网站的.htaccess文件中。”
答案 8 :(得分:0)
新的Cpanels阻止查看.htaccess文件,或者如果添加.user.ini,您将无法看到它。但有一点点黑客你可以让它工作。编辑例如wp-config.php,在URL栏中用.htaccess替换wp-config.php 现在您可以粘贴值并保存它。 enter image description here
答案 9 :(得分:0)
在将菜单项添加到Wordpress时遇到了同样的问题。我在Ubuntu 18.04,PHP 7.0上使用Wordpress 4.9.9。我只是取消注释了以下行,并在/etc/php/7.0/apache2/php.ini
; How many GET/POST/COOKIE input variables may be accepted<br>
max_input_vars = 1500
然后使用以下内容进行更改:
sudo apache2ctl configtest #(if it does not return ok Apache will not start)
sudo service apache2 reload
希望有帮助。
答案 10 :(得分:0)
“ PHP消息:PHP警告:未知:输入变量超过1000。要增加限制,请在php.ini中更改max_input_vars。
此php配置参数max_input_vars不仅会影响您的GET / POST / COOKIES参数,还会控制您的任何表单输入。
要设置或更改其值,请执行以下步骤。
1)通过在php.ini文件中查看来检查现有设置/值 通过使用
找到php.ini文件 <?php echo getinfo(); ?>
找到以下键:加载的配置文件:/etc/php/5.6/fpm/php.ini
2)以可编辑模式打开php.ini文件,并搜索max_input_vars 在您现有的默认设置中,默认值为1000,这行可能被注释,因此删除;取消注释并用您合适的值对其进行编辑,例如2500。
3)保存文件,并使用以下方法重新启动PHP服务
sudo service php5.6-fpm restart
类似地,您可以轻松地更新任何其他类似的PHP配置。
答案 11 :(得分:0)
只是为了补充。在使用mod_suphp的共享服务器上,我遇到了同样的问题。
声明4个max_input_vars(包括suhosin)并没有解决,它只是在1000个vars(默认值)上被截断,并在.htaccess上声明“ php_value max_input_vars 6000”,从而引发错误500。
解决的方法是在.htaccess上添加以下内容,该内容将php.ini文件递归应用于该路径
suPHP_ConfigPath /home/myuser/public_html
答案 12 :(得分:-6)
是的,将它添加到php.ini,重新启动apache,它应该可以正常工作。
如果您想使用ini_set("max_input_vars",100)