当POST数据从页面上的表单发送到服务器时,我收到了一个新的php警告。警告如下:
PHP警告:未知:输入变量超过1000。要增加php.ini中的限制更改max_input_vars。在未知的第0行,请参阅:https://mywebsite.com/index.php
问题是,我的表单没有近1000个输入变量,所以我很困惑为什么会出现这种情况。顺便说一句,我直到最近才遇到这个问题,我怀疑当我运行yum update
时,发生了一些更改/安装的东西导致了这个问题。如有任何建议或答案,我们将不胜感激。
编辑1:所以我做了var_dump($_REQUEST)
,得到了大约1000个单字符串。数组中的前几项是它们应该有的,但随后我不需要提交的一堆东西被分解为单个字符串。欢迎思考。
array(1001) {
["action"]=> string(10) "step1_show"
["submit"]=> string(6) "Step 1"
[0]=> string(1) "a"
[1]=> string(1) "c"
[2]=> string(1) "t"
[3]=> string(1) "i"
[4]=> string(1) "o"
[5]=> string(1) "n"
[6]=> string(1) "="
[7]=> string(1) "l"
[8]=> string(1) "o"
[9]=> string(1) "g"
[10]=> string(1) "o"
[11]=> string(1) "u"
[12]=> string(1) "t"
[13]=> string(1) "&"
[14]=> string(1) "p"
[15]=> string(1) "r"
[16]=> string(1) "o"
[17]=> string(1) "p"
[18]=> string(1) "e"
[19]=> string(1) "r"
[20]=> string(1) "t"
[21]=> string(1) "y"
[22]=> string(1) "="
[23]=> string(1) "3"
[24]=> string(1) "7"
[25]=> .....
答案:我的提交处理程序最终出现了问题。感谢大家的投入。
这是PHP中的一个新设置/值(与防止对PHP脚本的攻击的安全更新有关),所以你可以在更新后得到它(在PHP 5.3.9未设置/可用之前,suhosin用户自古以来就有类似的东西)。
输入值有不同的种类,数组成员也有计数。因此,仅仅统计表单字段是不够的,还需要查看URL和其他与输入相关的位置($_GET
、$_POST
、$_SERVER
、$_ENV
、$_FILES
、$_COOKIE
…)
参见max_input_vars
:
可以接受多少个输入变量。使用此指令可以降低使用哈希冲突的拒绝服务攻击的可能性。如果输入变量比该指令指定的要多,则会发出
E_WARNING
,并从请求中截断更多的输入变量。此限制仅适用于多维输入数组的每个嵌套级别。
有两种方法可以解决这个问题。
.htaccess
php_value max_input_vars 10000
php
ini_set('max_input_vars','10000' );
我在mac电脑上使用Laravel代客泊车。。。做了以下操作来修复错误。
- 在终端
php --ini
上查找加载的PHP配置文件 - sudo nano那个文件,在我的情况下是
sudo nano /usr/local/etc/php/7.3/php.ini
ctrl + w
搜索max_input_vars
- 就我而言,是
;max_input_vars = 1000
- 更新为
max_input_vars = 2000
- 保存文件
- 就我而言,是
valet restart
更新新配置- 有效:-)
我通过web主机管理面板(Littleoak)修复了max_input_vars问题我把max_input_vars = 0
改成了max_input_vars = 6000
。服务器公司在我的服务器上配置了几个php安装。我相信max_input_vars = 0
是为了防止垃圾邮件发送者使用服务器发送垃圾邮件。php.ini文件位于某个地方,不确定在哪里,但我可以通过站点管理员的cPanel对其进行修改。