PHP警告:未知:输入变量超过1000


PHP Warning: Unknown: Input variables exceeded 1000

当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代客泊车。。。做了以下操作来修复错误。

  1. 在终端php --ini上查找加载的PHP配置文件
  2. sudo nano那个文件,在我的情况下是sudo nano /usr/local/etc/php/7.3/php.ini
  3. ctrl + w搜索max_input_vars
    • 就我而言,是;max_input_vars = 1000
    • 更新为max_input_vars = 2000
    • 保存文件
  4. valet restart更新新配置
  5. 有效:-)

我通过web主机管理面板(Littleoak)修复了max_input_vars问题我把max_input_vars = 0改成了max_input_vars = 6000。服务器公司在我的服务器上配置了几个php安装。我相信max_input_vars = 0是为了防止垃圾邮件发送者使用服务器发送垃圾邮件。php.ini文件位于某个地方,不确定在哪里,但我可以通过站点管理员的cPanel对其进行修改。