フォームでPOSTされない時の対処方法 - php.ini max_input_varsの設定

2014/01/06

フォームでPOSTされない時の対処

概要

PHPで作成されたフォームでPOST送信したときに、取得側でデータが全て取得できない。
しかしプログラムは間違っていない。誤字脱字もない。。。
そんなときは、たいていPHPの設定による不具合です。

このようなときは、下記の設定を確認してみてください。

max_input_vars
max_file_uploads
memory_limit
post_max_size
upload_max_filesize

送信するデータが、これらの設定値を超えているため正しく送信できない可能性があります。
当記事では、これらの設定方法を紹介しています。

php.iniの設定方法

ファイルのパス

php.iniは以下の場所にあります。

[CentOS]
/etc/php.ini
[FreeBSD]
/usr/local/etc/php.ini
[MacOS]
/etc/php.ini

なければ、以下のようにしてコピーして作成します。


cp php.ini-production /etc/php.ini

max_input_vars

入力変数を最大何個まで受け入れるかを指定します。
例えば、1000と設定していた場合に1200の変数を送信した場合は、1000まで取得してそれ以降のデータはリクエストから削除されます。

max_input_varsは、PHP 5.3.9 以降で有効となります。

[設定例]


max_input_vars = 2000

max_file_uploads

同時にアップロードできるファイルの最大数を指定します。
例えば、20と設定していた場合に30のファイルのアップロードを試みた場合は、20までアップデートされ、それ以降のファイルはリクエストから削除されます。

何もファイルを指定せずに送信されたフィールドは、数に含みません。
max_file_uploadsは、PHP 5.2.12 以降で利用可能となります。

[設定例]


max_file_uploads = 30

memory_limit

使用できるメモリの最大値を指定します。
post_max_size、upload_max_filesizeより大きな値を設定する必要があります。

「memory_limit > post_max_size > upload_max_filesize」このようになっていないと意味がありません。
例えば、post_max_sizeで200Mと設定していてもmemory_limitが100Mとなっていたら、結果メモリが100Mしか使えないのでPOSTできる容量も100Mまでとなるためです。

[設定例]


memory_limit = 256M

post_max_size

POSTデータの最大サイズを指定します。
この値は、ファイルのアップデートも含みます。

大きなファイルをアップデートする場合、この値はupload_max_filesizeより大きな値を設定する必要があります。

[設定例]


post_max_size = 126M

upload_max_filesize

アップロードするファイルの最大サイズを指定します。
複数のファイルをアップロードする場合は、そのファイルの合計サイズが対象となります。

[設定例]


upload_max_filesize = 96M
Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る