PHP



Số lượng parameters trong mỗi lần gửi bằng POST giới hạn là 1000

by Hoàng Hải Triều / February 2, 2018

Để ý khi gửi dữ liệu bằng post, số lượng parameters ko được quá 1000. Nếu quá thì có thể dùng htaccess để thay đổi đối với chính thư mục đang sử dụng. PHP+PostgreSQLで構築したEC系のシステムで、受注500件分の納品書をPDF出力しようとしたら、273件分しか出力されないというような、妙なバグが出た。273件以下の場合は正常に出力される。 こんな中途半端な数字で処理が止まるようなことは考えにくいのだが、いろいろパラメータを変えてテストしても273件以上か未満かが境界になってることは間違いなさそう。 データをPOSTする側の画面Aと、POSTされたデータを受け取ってPDFを出力する側の画面BでPOSTの中身を見てみると、画面Bに273件しかデータが渡されていなかった。 メモリ、実行時間の制限には引っかかっていなそうだし、そういう挙動でも無いが、なにかが足切りされている感じがしたので、「POST 上限 php」で検索したところ、わりとあるあるネタだったようだ。 下記URLに記載の通り、1回でPOSTできるデータの数はデフォルトで1000件に設定されている。(PHP 5.3.9 以降) http://php.net/manual/ja/info.configuration.php max_input_vars integer 入力変数 を最大で何個まで受け付けるかを指定します (この制限は、スーパーグローバル $_GET、$_POST そして $_COOKIE にそれぞれ個別に適用されます)。 このディレクティブを使うと、ハッシュの衝突を悪用したサービス不能攻撃を受ける可能性を軽減できます。 このディレクティブで設定した数を超える入力変数があった場合は E_WARNING […]


to-top