PHP最大输入变量
我收到一条PHP最大输入变量,php,Php,我收到一条max\u input\u vars错误消息 我知道有一个php.ini设置可以从版本5.3.9开始改变这一点,但是,我运行的是版本5.1.6 当我查看5.1.6服务器的配置信息时,它显示max\u input\u vars值为1000 我的问题是:尽管我运行的是5.1.6,但我在phpinfo()中看到了这个设置,但它不在php.ini文件中。这是否意味着该值在此版本的PHP中是硬编码的,不能更改?您可以将其添加到PHP.ini中,它应该可以工作-只需在PHP5.3.6上进行测试。是
max\u input\u vars
错误消息
我知道有一个php.ini
设置可以从版本5.3.9开始改变这一点,但是,我运行的是版本5.1.6
当我查看5.1.6服务器的配置信息时,它显示max\u input\u vars
值为1000
我的问题是:尽管我运行的是5.1.6,但我在
phpinfo()
中看到了这个设置,但它不在php.ini
文件中。这是否意味着该值在此版本的PHP中是硬编码的,不能更改?您可以将其添加到PHP.ini中,它应该可以工作-只需在PHP5.3.6上进行测试。是的,将其添加到PHP.ini中,重新启动apache,它应该可以工作
如果您想使用
ini\u集(“max\u input\u vars”,100)
尝试使用5.3.3进行此修复,但没有任何更改,则可以动态测试它。在谷歌上搜索,我发现这个网页详细说明了如果服务器使用Debian下的Apache所使用的Suhosin补丁,则需要更改的其他设置
该网站解释说:
所以,如果你想把这个数字从默认值增加到3000
数字是1000,您必须在php.ini中输入以下行:
最大输入变量=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的版本中工作。参考PHP网上:
请注意,您不能在运行时使用函数ini\u set(name,newValue)
设置此指令,例如
ini_set('max_input_vars', 3000);
这是行不通的
正如文档中所解释的,该指令只能在每个目录范围内设置,这意味着通过.htaccess文件、httpd.conf或.user.ini(从PHP5.3开始)
看
将该指令添加到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文件中的max_input_vars值的注释并增加它(exp.2000),同时不要忘记重新启动服务器,这将有助于99.99%。使用此指令可以降低使用哈希冲突的拒绝服务攻击的可能性。如果输入变量多于此指令指定的数量,将发出E_警告,并从请求中截断更多的输入变量 我可以建议不要扩展默认值1000,而是通过序列化请求或按块发送请求来扩展应用程序功能。否则,您可以将其扩展到所需的配置
它肯定需要在php.ini中设置。请注意,您必须将其放在Centos7中的文件“.user.ini”中,而不是以前在Centos6中使用的“php.ini”。您可以将“.user.ini”放在任何子目录中,以便只影响该目录 .user.ini:
max_input_vars = 3000
在Centos7和PHP5.6.33上进行了测试。现在是2018年了。当我必须发送一个超过
max\u input\u vars
的请求时,我遇到了这个问题。我提出了一个解决方案,像我这样的newie在更改max\u input\u vars
param后忘记重新启动php fpm服务。因为我只尝试重新启动apache2
服务,但没有重新启动php-fpm
/etc/php/7.0/fpm/php.ini处取消对代码的注释,并根据需要设置编号
max\u input\u vars=4000
sudo服务php7.0-fpm重启
在
Debian Stretch
,php7.0
新Cpanels块上测试以查看.htaccess文件,或者如果添加.user.ini,则无法查看它。但只要稍加修改,你就能让它工作。例如,编辑wp-config.php,并在URL栏中将wp-config.php替换为.htaccess
现在您可以粘贴值并保存它。
php\u值最大\u输入\u变量6000
“将这一行放在您站点的.htaccess文件上。”在向Wordpress添加菜单项时遇到同样的问题。我在Ubuntu 18.04和PHP7.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
希望有帮助 “PHP消息:PHP警告:未知:输入变量超过1000。若要增加限制,请更改PHP.ini中的max_Input_vars。”
这个php配置参数max_input_vars不仅会影响GET/POST/COOKIES参数,还会控制任何形式的输入
要设置或更改其值,请执行以下步骤
1) 通过在php.ini文件中查看来检查现有设置/值
使用查找php.ini文件
找到以下键:加载的配置文件:/etc/php/5.6/fpm/php.ini
2) 在可编辑模式下打开php.ini文件并搜索max_input_vars
该行可能会在您现有的默认设置中被注释,默认值为1000,因此请删除;若要取消注释该行,请使用合适的值(例如2500)对其进行编辑
3) 使用以下命令保存文件并重新启动PHP服务
sudo服务php5.6-fpm重启
同样,您可以轻松地更新任何其他类似的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
在PHP5.1.6源代码中,我根本看不到对
max\u input\u vars
的任何引用,所以我不确定您是如何理解的
suPHP_ConfigPath /home/myuser/public_html