PHP max_input_vars


85

私は取得していますmax_input_varsエラーメッセージを。

php.iniバージョン5.3.9からこれを変更できる設定があることは理解していますが、バージョン5.1.6を実行しています。

5.1.6サーバーの構成情報を表示すると、max_input_vars値が1000であることが示されます。

私の質問は次のとおりです。5.1.6を実行しているのに、この設定はから表示さphpinfo()php.iniますが、ファイルにはありません。これは、値がこのバージョンのPHPでハードコーディングされており、変更できないことを意味しますか?


2
max_input_varsPHP 5.1.6のソースコードには参照がまったく表示されないため、phpinfo()の出力でどのように表示されているのかわかりません。私の知る限りでは、それは... 5.3.9の前に存在していなかった
drew010

2
多くのパラメータにはハードコードされたデフォルトがありますが、それでも新しい値を割り当てることができます。php.iniで何かが明示的に設定されていないという事実は、php.iniを使用してそれを変更できないことを意味するわけではありません。
octern 2012

どのエラーメッセージが表示されますか?質問に追加してください。
hakre 2012


からアップグレードしてから5.1.6 -> 5.3.3にダウングレードした後、このエラーが発生しました5.1.6。そのオプションが5.1.6 php.iniファイルに存在しないので私を投げました。行を追加し、番号を増やしたところ、エラー/問題は解消されました。
JoshP 2014年

回答:


48

これをphp.iniに追加すると、機能するはずです。PHP5.3.6でテストしただけです。


おかげで、それは知る価値がありますが、私は5.3.3を使用していて、喜びはありません。
Vaughany 2012

その明白なポインタに感謝します、真剣に-私はこの設定を1時間探していました....これを見るまで、ダミーを追加してください!
jamesTheProgrammer 2012

1
@Vaughany bitnamiスタックを使用している場合は、php-fpmを使用している場合に備えて再起動する必要があることに注意してください。/opt/bitnami/php/etc/php.ini
Shrenik

101

PHPネットに関するリファレンス:

http://php.net/manual/en/info.configuration.php#ini.max-input-vars

、あなたは機能と、実行時にこのディレクティブを設定することはできませんのでご注意くださいini_set(name, newValue)、例えば

ini_set('max_input_vars', 3000);

効果がないでしょう。

ドキュメントで説明されているように、このディレクティブはディレクトリスコープごとにのみ設定できます。つまり、.htaccessファイル、httpd.conf、または.user.ini(PHP 5.3以降)を介して設定できます。

http://php.net/manual/en/configuration.changes.modes.phpを参照してください

ディレクティブをphp.iniに追加するか、次の行を.htaccessに配置すると機能します。

php_value max_input_vars 3000
php_value suhosin.get.max_vars 3000
php_value suhosin.post.max_vars 3000
php_value suhosin.request.max_vars 3000

3
または、3つすべてのsuhosinディレクティブをphp.iniに配置しても問題ありません。
Alain Tiemblo 2013

1
php.iniにアクセスできる場合、ディレクティブ構文はmax_input_vars = 3000(+等号)です。
パラソル2017年

@ shorif2000 .user.iniファイルを使用して、IIS、PHP 7 w / wincacheで同様の問題が発生しました。最初の問題はキャッシュでした。最終的に機能するまで、.user.iniでランダムな順序で行を移動しました。2番目の問題は、1000を2000に変更しても効果はありませんでしたが、行全体を別の行に移動すると、機能しました。
ライアンブリスコール2018年

20

5.3.3でこの修正を試みたところ、変更はありません。サーバーがSuhosinパッチを使用している場合に変更が必要な他の設定について詳しく説明しているこのWebページhttp://anothersysadmin.wordpress.com/2012/02/16/php-5-3-max_input_vars-and-big-forms/を見つけました。Debian下のApacheはこれを行います。

サイトの説明:

したがって、この数をデフォルトの数である1000から3000に増やす場合は、php.iniに次の行を入力する必要があります。

max_input_vars = 3000 suhosin.post.max_vars = 3000 suhosin.request.max_vars = 3000

私はそれをテストしました(/ etc / php5 / apache2と/ etc / php5 / cliの両方でphp.iniに設定を追加し、Apacheを正常に再起動しました)が、phpinfoにmax_input_vars変数がありません。

いくつかのサイトでは、この変更が行われる最初のPHPバージョンとしてPHP 5.3.9を指摘しているため、最初にRTMが適切に機能しないという私の責任はありますが、5.3.3以降のバージョンで動作していると報告されている人々に興味があります。ただし、5.3.9未満。


9

php.iniファイルのmax_input_vars値のコメントを解除して増やす必要があります(exp。2000)。また、サーバーを再起動することを忘れないでください。これは99,99%に役立ちます。


これはUbuntu12.04では機能しませんでした。3000に設定して使用しsudo service apache2 restartます。Ubuntuを再起動する必要がありますか?
motorbaby 2016年

@ motorbaby、php.iniでこの値にコメントを付けた場合は、コメントを解除してサービスを再起動するだけです。OSの再起動は必要ありませんが、実行することはできますが、これには意味がありません。持っていない場合は、@ lubosdzソリューションを使用してください。両方とも役に立たない場合は、適切な場所で変更を行っているかどうかを確認してください。たとえば、いくつかのphp.iniファイルがあります。また、構成をリロードするために「sudo service
apache2reload

線はそこにありました。;値を削除して3000に変更しました。問題は、ブラウザのキャッシュにある可能性があります。PHPMyAdminを閉じて新しいタブで開くと、機能するようになりました。ありがとう!
motorbaby 2016年

6

今は2018年です。そして、を超えるリクエストを送信する必要があるときに、この問題に悩まされました。 max_input_vars。。そして、私のような初心者がmax_input_varsパラメータを変更した後にphpfpmサービスを再起動するのを忘れたという解決策を思いつきました。apache2サービスを再起動しようとしただけで、phpfpmは再起動しなかったため

  1. でコードのコメントを外す /etc/php/7.0/fpm/php.ini、必要に応じて番号を設定します
    max_input_vars = 4000
  2. 私はphp7を使用しているので、phpfpmサービスを再起動します。
    sudo service php7.0-fpm restart


テストに役立つことを願っていますDebian Stretchphp7.0


変更が適用されていることを確認し、非常に多くの解決策を読む方法を見つけようとして、丸1日を無駄にしました。php.iniに変更を加えた後、apacheを再起動する必要があると全員が述べましたが、違いはありませんでした。このソリューションに記載されているようにphp7.2-fpmを再起動すると、問題が解決しました。
ナイトレイン

3

このディレクティブを使用すると、ハッシュ衝突を使用するサービス拒否攻撃の可能性が軽減されます。このディレクティブで指定された数よりも多くの入力変数がある場合、E_WARNINGが発行され、それ以降の入力変数は要求から切り捨てられます。

デフォルト値である1000を拡張せず、リクエストをシリアル化するか、ブロックごとにリクエストを送信することで、アプリケーションの機能を拡張することをお勧めします。それ以外の場合は、これを必要な構成に拡張できます。

間違いなくphp.iniで設定する必要があります


3

これは、Centos6で機能していた「php.ini」ではなく、Centos7の「.user.ini」ファイルに配置する必要があることに注意してください。「.user.ini」を任意のサブディレクトリに配置して、そのディレクトリのみに影響を与えることができます。

.user.ini:

max_input_vars = 3000

Centos7およびPHP5.6.33でテスト済み。


2

php_value max_input_vars 6000

「この行をサイトの.htaccessファイルに配置してください。」


0

新しいCpanelsは、.htaccessファイルを表示するためにブロックします。または、.user.iniを追加すると、表示できなくなります。しかし、少しハックするだけで、それを機能させることができます。たとえば、wp-config.phpを編集し、URLバーでwp-config.phpを.htaccessに置き換えます。これで、値を貼り付けて保存できます。 ここに画像の説明を入力してください


0

Wordpressにメニュー項目を追加するのと同じ問題がありました。Ubuntu 18.04、PHP7.0でWordpress4.9.9を使用しています。次の行のコメントを外して、1500に増やしました。/etc/php/7.0/apache2/php.ini

; How many GET/POST/COOKIE input variables may be accepted<br>
max_input_vars = 1500

次に、以下を使用して変更を実行しました。

sudo apache2ctl configtest  #(if it does not return ok Apache will not start)
sudo service apache2 reload

お役に立てば幸いです。


0

「PHPメッセージ:PHP警告:不明:入力変数が1000を超えました。制限を増やすには、php.iniのmax_input_varsを変更してください。

このphp構成パラメーターmax_input_varsは、GET / POST / COOKIESパラメーターだけでなく、フォーム入力も制御します。

その値を設定または変更するには、以下の手順に従います。

1)php.iniファイルで既存の設定/値を表示して確認します。を使用してphp.iniファイルを見つけます。

<?php echo getinfo(); ?>

以下のキーを見つけてください:ロードされた構成ファイル:/etc/php/5.6/fpm/php.ini

2)php.iniファイルを編集可能モードで開き、max_input_varsを検索します。この行は、デフォルト値1000の既存のデフォルト設定でコメント化されている可能性があるため、;を削除します。コメントを外して、適切な値(2500など)で編集します。

3)ファイルを保存し、以下を使用してPHPのサービスを再起動します sudo service php5.6-fpm restart

同様に、他の同様のPHP構成を簡単に更新できます。


0

補足するだけです。mod_suphpを使用している共有サーバーで、同じ問題が発生していました。

4つのmax_input_vars(suhosinを含む)を宣言しても解決しませんでした。1000vars(デフォルト)で切り捨てを続け、.htaccessで「php_valuemax_input_vars6000」を宣言するとエラー500がスローされました。

解決したのは、.htaccessに以下を追加することでした。これにより、php.iniファイルがそのパスに再帰的に適用されます。

suPHP_ConfigPath /home/myuser/public_html

-6

はい、それをphp.iniに追加し、apacheを再起動すると、機能するはずです。

必要に応じて、その場でテストできます ini_set("max_input_vars",100)


8
これは機能しません。php.net/ manual / en /info.configuration.phpを参照してください。ini_setではなく、ディレクトリ仮想ホストまたはhtaccessごとに設定する必要があります。
lubosdz 2013年

この変数は、ini_set関数を使用して設定できます。なぜこの答えは票を落としたのですか?php.net/manual/en/info.configuration.php
アフマド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.