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にも対応できるんじゃないかと。