我收到一条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 中是硬编码的并且无法更改?
我收到一条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 中是硬编码的并且无法更改?
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
您可以将它添加到 php.ini 并且它应该可以工作 - 刚刚在 PHP 5.3.6 上对其进行了测试。
刚刚尝试使用 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。
现在是 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
您需要取消注释 php.ini 文件中的 max_input_vars 值并增加它(exp. 2000),也不要忘记重新启动服务器,这将有助于 99,99%。
使用该指令可以降低使用哈希冲突的拒绝服务攻击的可能性。如果输入变量多于该指令指定的数量,则会发出 E_WARNING,并从请求中截断更多输入变量。
我可以建议不要扩展默认值 1000,并通过序列化请求或按块发送请求来扩展应用程序功能。否则,您可以将其扩展到所需的配置。
它肯定需要在 php.ini 中设置
请注意,您必须将其放在 Centos7 中的文件“.user.ini”中,而不是以前在 Centos6 中工作的“php.ini”中。您可以将“.user.ini”放在任何子目录中,以便仅影响该目录。
.user.ini :
max_input_vars = 3000
在 Centos7 和 PHP 5.6.33 上测试。
php_value max_input_vars 6000
“将此行放在您网站的 .htaccess 文件中。”
只是在向 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
希望有帮助。
“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 配置。
只是为了补充。在使用 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
新的 Cpanels 阻止查看 .htaccess 文件,或者如果您添加 .user.ini 您将无法看到它。但只要稍加修改,你就可以让它工作。编辑例如 wp-config.php 并在 URL 栏中将 wp-config.php 替换为 .htaccess 现在您可以粘贴值并保存它。 在此处输入图像描述
如果您正在使用类似wodby (docker4php
或docker4drupal
) 或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
是的,将它添加到 php.ini,重新启动 apache,它应该可以工作了。
如果您愿意,您可以即时测试它ini_set("max_input_vars",100)