インソースマーケティングデザイン
2017.05.12 システム
[PHP] PHP5.3からはPOSTできる数に上限があるから気をつけて!
こんにちは。エンジニアの高田です。
GWは全力で遊びすぎて、未だに疲れを引きずっています。。。
さて今回は、PHP5.3からはPOSTできる数に上限(max_input_vars)があるため、その値を変更する方法をご紹介します。
フォームの値を全部受け取れない?!
先日、フォームの入力エリアをボタンを押すと増やせるページを作っていました。
どんどん増やしてテストしていたら急に正常に動かなくなり、見てみると送信しているはずの値が受け取れなくなっていました。
一部は送信されているけど、フォームの値を全部受け取れていない。。。
php.iniの設定値「post_max_size」辺りを疑ってみましたが、まったく変わらず。。。
「upload_max_filesize」?アップロードしてないし。。。
行き着いた先が「max_input_vars」でした。
max_input_varsとは
PHPマニュアルによるとPHP5.3.9以降の場合、1度にPOSTできる数に上限が設けられています。
php.iniの「max_input_vars」に上限が設定されていて、デフォルト値が「1000」となっています。
具体的には、formタグ内のinputタグが1000以上あると、1000を超えた分はsubmitしても送信されません。
なかなか1000を超えることはないと思いますが、業務システムのように1ページ内にいっぱい入力項目があるようなシステムを作る際は、注意が必要です。
max_input_vars設定値を変更する
今回はPOSTできる数の上限を「1000」から「10000」に変更してみました。
変更するには、「max_input_vars」の設定値をphp.iniで変更する方法と.htaccessで変更する方法があります。
「PHP_INI_PERDIR」のためPHPソース内でini_set()では変更できません。
○php.ini
○.htaccess
phpinfo()などで変更が反映されているか確認してみてください。
動作確認もお忘れなく!
ではまた。