スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CakePHPのAuthのバグ

  • 2012/03/12 08:45
  • Category: CakePHP
CakePHP1.3でAuthコンポーネントを利用して、ログイン画面以外から認証を経てその画面に戻ってくる時に以下のようなエラーが発生する場合がある。

s.png


Missing Controller
Error: SController could not be found.
Error: Create the class SController below in file: app/controllers/s_controller.php
class SController extends AppController {
var $name = 'S';
}
?>
Notice: If you want to customize this error message, create app/views/errors/missing_controller.ctp


要するに「S」というコントローラがないよ、と言っている。
認証をクリアした後で、Authが元のパスに戻そうとするときにヘマをしているらしい。

例えば「http://www.hoge.com/fuge/」にCakePHPをインストールして「fuges」コントローラ(FugesConrtoller)でAuthコンポーネントによる認証を設定している場合、fuge/fuges/indexとかfuge/fuges/fooとかに直接アクセスしようとすると、一回認証画面に飛ばされて、OKだったときに元のパスにリダイレクトするのだが、その時に元のパス(/fuges/index)がなぜか「/s/index」に変換されてしまっている。

正直年度末でソース追ってる余裕ないけど、間違いなく、CakePHPインストールディレクトリとコントローラ名を同じ単語にしてはダメっぽい。

保存してるパスからインストールディレクトリを抜いたり置換したりのあたりで正規表現とか失敗してるのではないかな。

めちゃくちゃ忙しいこの時期に夜中までハマった。
この件で英語で検索しても何のヒントも得られなかったから一応英語でもメモしておこう。



If you have below error on CakePHP when set Auth component, you must set controller's name different from site path.

works wrong: http://hoge.com/fuge/fuges/index
works good: http://hoge.com/fuge/fuuuuuges/index

[Error messages]
Missing Controller
Error: SController could not be found.
Error: Create the class SController below in file: app/controllers/s_controller.php

Pagination

Trackback

Trackback URL

http://muurimemo.blog.fc2.com/tb.php/2-9d37e8c4

Comment

Post Your Comment

コメント:登録フォーム
公開設定

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。