もう作業日誌というか、備忘録

cake phpマニュアルのコードを読んでてもなかなか理解の出来ない悪い頭の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, //これを追加
};

で解決!

と、思いたい。

関連してそうなエントリ

koda