質問: upgrade シェルを使ってアップグレードを行いました。 その後、 app/webroot/index.php上書き core.phpやbootstrap.php、database.phpなども環境に合わせました。 とりあえず、上記まで行い、アクセスしてみると以下のエラーが出力されております。 Call to a member function is() on a non-object in [/var/www/html/lib/Cake/Controller/Component/SecurityComponent.php, line 388] 対象コードはいかになりますが、CakerequestにもISはあったのですが、、、なぜエラーとなるかが、、、、わかりません。 388 if (!$this->request->is('ssl')) { 389 if (!$this->blackHole($controller, 'secure')) { 390 return false; 391 } 392 } cakephp1.3から2.x系にアップグレードしたいだけですが、、、 もしどなたか何か、情報があればお願いします。 また、アップグレード手順が違う!!!というのであれば、手順も教えていただければ幸いです。
回答: エラーの内容は、non-objectはis()関数をコールできないというものです。 原因は$this->requestがnullだからだと思います。componentはrequestを直接参照できないと思います。 ※cakephp1ではできたのかもしれません(そこは調べていないです) controllerを経由して参照すればいいと思います。 参考:CakePHP2でComponentからHTTPリクエストのクエリパラメータを取得する方法 **(追記:コメント欄のまとめ)** 問題はSecurityComponentでした。Cakephpのコード見てみたところ、requestがnullになるケースはわからなかった。該当する問題やバグがないか調べたところ、類似している以下の問題を見つけて、実際にコンストラクタをオーバライドしているのが影響していたようです。 http://d.hatena.ne.jp/cakephper/20130108/1357633417