2014年4月23日水曜日

[CakePHP]AppControllerのbeforeFilterが2回以上呼び出されている時。

「Missing View」のエラーがでる時なんかは、継承しているAppControllerのbeforeFilterが2回以上呼ばれていることがわかった。

また、それぞれのControllerでbeforeFilterを完全に上書きoverrideしている時でも(つまり、parent::beforeFilter();を書かないケース)、Missing View等のエラー画面を出すのにAppControllerのbeforeFilterが呼ばれてしまう。(せっかく完全上書きしてAppControllerのbeforeFilterを使わないようにしているのに)

具体的に言うと、AppControllerでは各Controllerで共通で使う、cookieを使った自動ログイン処理を入れたりするが、UserControllerだけはlogout処理等があるため自動ログインしたくない場合などに困る。(logout処理した直後に自動ログイン処理が走ってしまう。cookieはresponseが完了するまで反映されないため)

2014年4月6日日曜日

[Composer]不要なパッケージを削除する方法。

ここを参考に。
uninstall command please.


1. まずcomposer.json から不要なパッケージの行を削除。

2. composer update xx/yy を実行する。

xx/yyはパッケージ名。例えばこんな感じ。

 composer update cakedc/search


これで、不要なパッケージは、composer.lockからも削除され、実ファイル群も削除される。

2014年4月1日火曜日

[CakPHP]]Warning (512): SplFileInfo::openFile(/path/to/app/tmp/cache/cake_toolbar_cache20dabd4b42c7aea65f12ba6b3ed09c3b): failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 355]

こんな感じのエラーが出たら、とりあえず、

cd app/tmp/cache
chmod 666 cake_toolbar_cache20dabd4b42c7aea65f12ba6b3ed09c3b

をやればエラーは出なくなる。

SplFileInfo::openFile(/app/tmp/cache/persistent/cake_core_cake_console_):failed to open stream:Permission denied in /lib/…/FileEngine.php line 293

ここを参考にした。core.phpをいじることで恒常的に直せそうだけども今回は暫定対処で。