3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

cakePHPとFormタグが多すぎる場合のエラーがひどい

Posted at

cakePHP使っているとエラーを隠す動きがデフォルトになっているためけっこう見落とすエラーが多いです。
今回ハマったのが、旧サーバーから新サーバーへの移行。
その際にphpも5.2から5.4にあげました。

このPHPのバージョンアップにおいての見落としがありました。

システムが動かなくなったのですが、それがtexboxやradio,checkbox,buttonがたくさん1画面内にあるページでの動作です。

PHPのドキュメントにあります。

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

これが5.3.9以降でデフォルト1000という数字がセットされるようになりました。
知らずにphpのバージョンをアップした場合は、上限が勝手に設定されます。

つまり、INPUT等のFORMで渡される内容が上限が1000で残りはカットされるということです。勝手に。

まあ、設定されていてもドキュメントにはWARNINGが表示されるのですが、cakePHPでは、基本は表示しない。なのでまったく意図しない動きとなってしまっていた。

古くからPHPを使っていて久々に使ったわけですが、
cakePHPだからというこではないのですが、きっちりtry catchを入れて制御しておけば、いかなるwarningにも対応できるんじゃないかと。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?