BLOGスタッフブログ

インソースマーケティングデザイン

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」となっています。

参考:PHPマニュアルより「max_input_vars」

具体的には、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

max_input_vars = 10000

 
 
○.htaccess

php_value max_input_vars 10000

 
 
phpinfo()などで変更が反映されているか確認してみてください。
動作確認もお忘れなく!

ではまた。

インソースマーケティングデザインが書いた他の記事

見積もり・ご依頼など、
お気軽にご相談ください

本サイトはユーザーエクスペリエンスの向上などを目的に、Cookieを使用しています。
右記のバナーで「同意する」をクリックする、または本サイトを利用することにより、
お客様は弊社のCookieポリシーに同意したことになります。

同意します