マニュアルのコードを読んでてもなかなか理解の出来ない悪い頭のkodaですから、取り合えず一連のコードを書いて完成させ、Debugで追っていこうという魂胆でした。
が片っ端からエラー。最初は途方に暮れていましたが、根気よく探して行ったら4〜5箇所あったコードのミスのうち純粋なミスはひとつのみで、あとはすべてマニュアル側の記述ミスと言うオチ。
しどい…、が、一貫したマニュアルの記述ミス(Favorite というコントローラー名 が Favolite になってる)なので、それに引っかかってる私も問題。
ところが、それだけでは解決しない問題にぶつかって、今日の日誌はその備忘録とします。
吐出されたエラーは以下のとおり(青文字は後で説明するのでスルー)
Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/models/myapp_cake_model_default_データベース名_list) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356] Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/models/myapp_cake_model_default_データベース名_list) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356] Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/persistent/myapp_cake_core_cake_dev_ja) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356] Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/persistent/myapp_cake_core_cake_dev_ja) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356] Warning (512): _cake_core_ cache was unable to write 'cake_dev_ja' to File cache [CORE/Cake/Cache/Cache.php, line 323] Warning (512): _cake_model_ cache was unable to write 'default_データベース名_list' to File cache [CORE/Cake/Cache/Cache.php, line 323] Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/persistent/myapp_cake_core_method_cache) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356] Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/models/myapp_cake_model_default_データベース名_list) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356] Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/models/myapp_cake_model_default_データベース名_list) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356] Warning (512): _cake_model_ cache was unable to write 'default_データベース名_list' to File cache [CORE/Cake/Cache/Cache.php, line 323] 【以下省略】
もう、画面はぐっちゃんぐっちゃん
なんとなくパーミッション(権限)でエラーが起こってるみたいなのはわかる。
しかし、前回アプリを作った時に、そのようなエラーはなく、そこからの複製で作ったのになんでこんなエラー出るかな?
ls -aRl ./cache/
./cache/:
合計 20
drwxrwxrwx 5 kodatai kodatai 4096 10月 5 11:59 .
drwxrwxrwx 6 kodatai kodatai 4096 10月 5 11:59 ..
drwxrwxrwx 2 kodatai kodatai 4096 10月 30 20:58 models
drwxrwxrwx 2 kodatai kodatai 4096 10月 30 21:13 persistent
drwxrwxrwx 2 kodatai kodatai 4096 10月 5 11:59 views
./cache/models:
合計 28
drwxrwxrwx 2 kodatai kodatai 4096 10月 30 20:58 .
drwxrwxrwx 5 kodatai kodatai 4096 10月 5 11:59 ..
-rwxrwxrwx 1 kodatai kodatai 0 10月 5 11:59 empty
-rw-rw-r-- 1 kodatai kodatai 749 10月 24 19:26 myapp_cake_model_default_データーベース名_cake01_articles
-rw-rw-r-- 1 kodatai kodatai 480 10月 28 10:06 myapp_cake_model_default_データーベース名_cake01_users
-rw-rw-r-- 1 apache apache 1180 10月 31 11:50 myapp_cake_model_default_データーベース名_cake02_contacts
-rw-rw-r-- 1 apache apache 303 10月 31 11:50 myapp_cake_model_default_データーベース名_cake02_mtr_favorites
-rw-rw-r-- 1 kodatai kodatai 69 10月 28 10:06 myapp_cake_model_default_データーベース名_list
./cache/persistent:
合計 36
drwxrwxrwx 2 kodatai kodatai 4096 10月 30 21:13 .
drwxrwxrwx 5 kodatai kodatai 4096 10月 5 11:59 ..
-rwxrwxrwx 1 kodatai kodatai 0 10月 5 11:59 empty
-rw-rw-r-- 1 kodatai kodatai 43 10月 28 10:06 myapp_cake_core_cake_dev_eng
-rw-rw-r-- 1 kodatai kodatai 43 10月 24 19:26 myapp_cake_core_cake_dev_ja
-rw-rw-r-- 1 kodatai kodatai 43 10月 21 14:38 myapp_cake_core_cake_ja
-rw-rw-r-- 1 kodatai kodatai 43 10月 21 17:29 myapp_cake_core_default_ja
-rw-rw-r-- 1 kodatai kodatai 5168 10月 28 10:06 myapp_cake_core_file_map
-rw-rw-r-- 1 kodatai kodatai 551 10月 28 10:06 myapp_cake_core_method_cache
./cache/views:
合計 8
drwxrwxrwx 2 kodatai kodatai 4096 10月 5 11:59 .
drwxrwxrwx 5 kodatai kodatai 4096 10月 5 11:59 ..
-rwxrwxrwx 1 kodatai kodatai 0 10月 5 11:59 empty
ディレクトリに関してはパーミッションで文句言われるはずはなさそう。
ちょっと気になるのが、cakephpが吐き出しているファイル自体のパーミッション。書き込み権限がない。
ちょっとテストで最初に出てくるエラーの対象になっているファイル(青)に書き込み権限を付けて反応を見よう
chmod 666 myapp_cake_model_default_データーベース名_list
再度画面を表示する
Warning: SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/persistent/myapp_cake_core_file_map) [splfileinfo.openfile]: failed to open stream: Permission denied in /サーバー名/cakephp/lib/Cake/Cache/Engine/FileEngine.php on line 356
Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/persistent/myapp_cake_core_method_cache) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356]
CakePHP: the rapid development php framework
サンプルアプリ1
問い合わせフォーム
Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/persistent/myapp_cake_core_default_ja) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356]
Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/persistent/myapp_cake_core_default_ja) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356]
Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/persistent/myapp_cake_core_cake_dev_ja) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356]
Warning (512): SplFileInfo::openFile(/サーバー名/cakephp/sample1/tmp/cache/persistent/myapp_cake_core_cake_dev_ja) [splfileinfo.openfile]: failed to open stream: Permission denied [CORE/Cake/Cache/Engine/FileEngine.php, line 356]
Warning (512): _cake_core_ cache was unable to write 'cake_dev_ja' to File cache [CORE/Cake/Cache/Cache.php, line 323]
Warning (512): _cake_core_ cache was unable to write 'default_ja' to File cache [CORE/Cake/Cache/Cache.php, line 323]
ビンゴ!
一気にエラーが無くなる。先程はグレーの部分は表示されておらず。
とすると、吐き出してる側のCakePHP側も問題だとほぼ断定できたので、ここでググレカスの法則に気が付き調べてみると、いくつかのサイトの中このサイトが浮上!
Cache::config(‘default’, array(‘engine’ => ‘File’, ‘mask’ => 0666));
って書いてあるから、多分 キャッシュには666で書き込むよねぇ、普通(# ゚Д゚)ゴルァ って設定だと思うので真似してみる。
【結果】
…、よくわからない。そのエラーは解決した。でも新しく吐き出されたファイルたちはパーミッションの設定が666に変わってない。
そしてグレーのエラーは未解決 orz
【追記】
結局、わからずじまい
/tmp/cache/persistent/内のファイルも同じ構造っぽいので
chmod 0666 myapp*
みたくしたらほとんど灰色部分のエラーも無くなる。しかし、このtmpファイルを吐き出す部分がわからず根本的な解決にいたらず。
ただ、根本的な解決になっていないので気持ち悪い。ここのブログ主も同様な気持ち悪さを持っているのではないかな?
【追記>解決】
発見!
/Config/core.php
Cache::config('_cake_core_', array( //うんたらかんたら 'mask'=>0666, //これを追加 }; Cache::config('_cake_model_', array( //うんたらかんたら 'mask'=>0666, //これを追加 };
で解決!
と、思いたい。