95

我收到一条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 中是硬编码的并且无法更改?

4

14 回答 14

105

PHP网络上的参考:

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

请注意,您不能在运行时使用 function 设置此指令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
于 2013-01-04T23:12:46.840 回答
50

您可以将它添加到 php.ini 并且它应该可以工作 - 刚刚在 PHP 5.3.6 上对其进行了测试。

于 2012-04-24T18:32:41.923 回答
22

刚刚尝试使用 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。

于 2012-07-05T07:52:03.330 回答
12

现在是 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 Stretch有帮助php7.0

于 2018-02-20T17:10:40.810 回答
9

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

于 2014-04-30T08:47:07.400 回答
4

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

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

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

于 2016-09-08T12:57:37.763 回答
3

请注意,您必须将其放在 Centos7 中的文件“.user.ini”中,而不是以前在 Centos6 中工作的“php.ini”中。您可以将“.user.ini”放在任何子目录中,以便仅影响该目录。

.user.ini :

max_input_vars = 3000

在 Centos7 和 PHP 5.6.33 上测试。

于 2018-02-20T06:07:21.807 回答
2

php_value max_input_vars 6000

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

于 2018-05-02T09:54:56.310 回答
2

只是在向 Wordpress 添加菜单项时遇到了同样的问题。我在 Ubuntu 18.04、PHP 7.0 上使用 Wordpress 4.9.9。我只是取消注释以下行并将其增加到 1500/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

希望有帮助。

于 2019-01-21T06:46:46.697 回答
1

“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 配置。

于 2019-08-28T07:28:24.680 回答
1

只是为了补充。在使用 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
于 2019-12-24T13:32:41.170 回答
0

新的 Cpanels 阻止查看 .htaccess 文件,或者如果您添加 .user.ini 您将无法看到它。但只要稍加修改,你就可以让它工作。编辑例如 wp-config.php 并在 URL 栏中将 wp-config.php 替换为 .htaccess 现在您可以粘贴值并保存它。 在此处输入图像描述

于 2018-03-29T22:10:24.777 回答
0

如果您正在使用类似wodby (docker4phpdocker4drupal) 或lando或试图找到“为什么 php.ini 不起作用”的答案(像我一样),这些工具正在使用它们自己的方式将配置传递给 php

https://github.com/wodby/php#php-and-php-fpm-configuration

我试图设置max_input_vars,在 wodby+docker-compose 你这样做

  php:
    image: wodby/drupal-php:$PHP_TAG
    container_name: "${PROJECT_NAME}_php"
    environment:
      PHP_MAX_INPUT_VARS: 9999
于 2021-12-30T17:13:11.317 回答
-6

是的,将它添加到 php.ini,重新启动 apache,它应该可以工作了。

如果您愿意,您可以即时测试它ini_set("max_input_vars",100)

于 2012-04-24T18:47:10.477 回答