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

时间:2012-03-12 19:56:57

标签: php centos

当我从页面上的表单到我的服务器的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]=> .....     

ANSWER :我的提交处理程序出现了问题。感谢大家的投入。

5 个答案:

答案 0 :(得分:42)

这是PHP中的一个新设置/值(与安全更新相关以防止对PHP脚本的攻击),所以你在更新后得到这个(在PHP 5.3.9没有设置/可用之前,suhosin用户有自年龄以来类似的事情。)

输入值属于不同类型,数组成员也计算在内。因此,仅计算表单字段还不足以查看与输入相关的URL和其他位置($_GET$_POST$_SERVER$_ENV,{{ 1}},$_FILES ...)。

请参阅max_input_vars

  

可以接受多少input variables。使用此指令可以减少使用哈希冲突的拒绝服务攻击的可能性。如果输入变量多于此指令指定的输入变量,则会发出$_COOKIE,并从请求中截断其他输入变量。此限制仅适用于多维输入数组的每个嵌套级别。

答案 1 :(得分:0)

有两种方法可以解决此问题。

.htaccess

php_value max_input_vars 10000

php

ini_set('max_input_vars','10000' );

答案 2 :(得分:0)

我在使用Laravel代客的Mac机器上...做了以下操作来纠正错误。

  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. 那行得通:-)

答案 3 :(得分:0)

JS:

var json = JSON.stringify(jsonArray);

PHP:

$data = json_decode($json);

让我知道它是否有效?

答案 4 :(得分:-1)

我通过我的网络主机管理面板(Littleoak)修复了max_input_vars问题 我将max_input_vars = 0更改为max_input_vars = 6000。 服务器公司配置的服务器上有几个php安装。我相信max_input_vars = 0是为了防止垃圾邮件发送者使用服务器发送垃圾邮件。 php.ini文件存在于某处,不知道在哪里,但我能够通过我的站点管理员上的cPanel修改它。