web-dev-qa-db-ja.com

PHP警告:不明:入力変数が1000を超えました

POSTページ上のフォームからサーバーへのデータがある場合、新しいPHP警告が表示されます。警告は次のとおりです。

PHP警告:不明:入力変数が1000を超えました。制限を増やすには、php.iniのmax_input_varsを変更します。行0の不明で、リファラー: https://mywebsite.com/index.php

問題は、私のフォームには1000個近くの入力変数がないため、これが表示される理由について困惑しています。補足として、私は最近までこの問題を抱えていませんでしたが、_yum update_を実行したときに、これを引き起こしている変更またはインストールされたものがあると思われます。アドバイスや回答を歓迎します。

編集1:だから私はvar_dump($_REQUEST)をし、〜1000個の単一文字列を得た。配列内の最初の2つの項目は、本来あるべきものですが、その後、提出する必要のないものが1つの文字列に分解されます。考えを歓迎します。

_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 [〜#〜]:それは結局、送信ハンドラの問題になりました。ご意見ありがとうございます。

20
Jon

これはPHPの新しい設定/値です(PHPスクリプトへの攻撃を防ぐためのセキュリティ更新に関連するため)、更新後に(PHP 5.3.9 not set /利用可能、 suhosin ユーザーは古くから似たようなものを持っています)。

入力値は種類が異なり、配列メンバーもカウントします。そのため、フォームフィールドをカウントするだけでなく、URL(および入力に関連する他の場所($_GET$_POST$_SERVER$_ENV$_FILES$_COOKIE ...)。

max_input_vars を参照してください:

入力変数 をいくつ受け入れることができます。このディレクティブを使用すると、ハッシュ衝突を使用するサービス拒否攻撃の可能性が軽減されます。このディレクティブで指定された数よりも多くの入力変数がある場合、E_WARNINGが発行され、それ以降の入力変数はリクエストから切り捨てられます。この制限は、多次元入力配列の各ネストレベルにのみ適用されます。

42
hakre