ユーザーさんから「ここ半年以内に発売されたゲーム」欄から得点を入力しようとすると得点が入力できないと申告がありました。

ErogameScapeの得点入力画面は、1つの画面でなんでもかんでも入力できるのが特徴で(入力項目が多すぎてユーザーさんに敬遠されるという負の面も強いのですが…) 以下画面イメージのように、入力項目が多いです。

無題1

1つのゲームに対してinputタグが10くらい(hidden属性のものも含めて)、一月に発売されるゲームが30本あったとして、 半年分のゲームを一度に入力できる画面を作ると、inputタグが1800個必要です。

PHP5.3.9以降はphp.iniにmax_input_varsという項目があります。
こちらのパラメータの意味は以下の通りです。
入力変数 を最大で何個まで受け付けるかを指定します (この制限は、スーパーグローバル $_GET、$_POST そして $_COOKIE にそれぞれ個別に適用されます)。 このディレクティブを使うと、ハッシュの衝突を悪用したサービス不能攻撃を受ける可能性を軽減できます。 このディレクティブで設定した数を超える入力変数があった場合は E_WARNING が発生し、 それ以降の入力変数はリクエストから削除されます。
max_input_varsのデフォルトの値は1000で、デフォルトのまま運用していたので、この制限に引っかかってしまっていました。

apacheのerrorログには以下のように記録されます。

[Sun Oct 13 20:33:22 2013] [error] [client 192.168.0.12] PHP Warning:  Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0, referer: http://192.168.0.2/~ap2/ero/toukei_kaiseki/contents_tokuten_ichiran_default.php?mode=half_a_year_released

※ちなみにローカルのテスト環境では問題なかったのですが…理由はローカルのテスト環境のPHPのverが低かったから…が理由でした。

※他の理由でPOSTが欠けることがあります。HTTPのPOSTで送信できるデータのサイズ at softelメモの文書が参考になるかなと思います。

max_input_varsは10000くらいあればいいかな?と思って10000に引き上げたのですが、「ア行」のゲームのデータをまとめて入力する画面は10000では足りず、100000にしてOKとなりました。

私はまとめて入力できる画面が好きなのですが、max_input_varsが追加された理由が「このディレクティブを使うと、ハッシュの衝突を悪用したサービス不能攻撃を受ける可能性を軽減できます。」ですので、うーむ…、さすがに「ア行」を全部表示して入力できるような画面は廃止すべきなのかな…思いました。