当我从页面上的表单到我的服务器的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 :我的提交处理程序出现了问题。感谢大家的投入。
答案 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机器上...做了以下操作来纠正错误。
php --ini
上查找已加载的PHP配置文件。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
更新新配置。答案 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修改它。