2016-04-18 6 views
1

私はそれにたくさんのアイテムを入れた非常に大きなフォームを持っています。 PHP 7にアップグレードした後、新しい環境ではPOST要素のいくつかがサーバーによって受信されません。 $_POST配列は空ではなく、多くの要素が含まれていますが、配列の末尾にある一部の要素がありません。POSTデータがPHPによって切り捨てられるのはなぜですか?

エラーメッセージは表示されません。

post_max_sizephp.ini(8Mから128M)に増加していませんでした。データ構造自体は400k未満ではあまり大きくないので、これが理由ではありません。

なぜこれができますか?

+2

'多く、多くのそれは〜2000だった –

+0

@CharlotteDunois items'を定義します。正確な数は問題の時点​​では関係ありませんでしたが、それは1000を超えていた点です。:) –

+0

多くのものは定義されておらず、特にX以上の意味もありません。用語ははるかに生産的です。しかし、これはほぼ2年前の質問です。 –

答えて

2

PHP 5.3.9以降。 max_input_varsという新しいphp.ini設定が存在します。受信したデータから使用できるアイテムの数を決定します。デフォルトでは1000です。つまり、$ _POSTの最初の1000項目のみが使用されます。

したがって、post_max_sizeを大きくしてもmax_input_varsを1000から5000に増やしたり、必要なものを増やしたりしないでください。

さらに詳しい情報:PHP Manual for max_input_vars

+0

imo、これは一見価値があるでしょう。以前のバージョンのPHP.INIファイルのデフォルトより高く設定されていて、PHP7のini.fileでまだ増加していない可能性があります。なぜ落札が必要なのか分かりません。 –

+0

私は落札に同意しません。 はい、あまりにも多くの$ _POSTの項目がうまくいかないのですが、あなたや他人のレガシーコードの下でPHPのバージョンをアップグレードする必要がある場合、コードの構造を近代化するのに十分なリソースがあるとは限りません。再テストの時間要件と障害の潜在的な結果を考慮してください。 –

関連する問題