[CakePHP] app/tmp/cache/modelsディレクトリを、Webサーバが書き込めるようにする必要がある。
問題とその現象
/home/foo/public_html/cakeにCakePHPをインストールしたが、アクセスすると以下の警告が表示される。
Warning: file_put_contents(/home/foo/public_html/cake/app/tmp/cache/models/default_data_list) [function.file-put-contents]: failed to open stream: Permission denied in /home/foo/public_html/cake/cake/basics.php on line 867
解決方法
/home/foo/public_html/cake/app/tmp/cache/modelsのパーミッションを、Webサーバが書き込めるように、以下のようにして変更します。
$ chmod 777 models [~/public_html/cake/app/tmp/cache]
解決方法までの経緯
警告を発しているcake/basics.phpの867行目付近は、次のようになっています。
<?php (略) file_put_contents($filename, $data); (略) ?>
警告文の中ですでにパス名が表示されていますが、念のため、var_dump関数で$filename変数の値を表示させてみます。
<?php (略) var_dump($filename); file_put_contents($filename, $data); (略) ?>
すると画面には、次の文が追加されました。
string(65) "/home/foo/public_html/cake/app/tmp/cache/models/default_data_list"
そこで、app/tmp/cache/modelsディレクトリを、Webサーバが書き込めるようにします。
$ chmod 777 models [~/public_html/cake/app/tmp/cache] $ ls -ld models [~/public_html/cake/app/tmp/cache] drwxrwxrwx 2 foo foo 50 2006-12-27 06:09 models
先ほどのvar_dump関数を削除して、再表示させてみます。すると、警告はでなくなりました。ちなみに、このmodelsディレクトリに何が保存されているのか、調べてみます。
$ ls -l [~/public_html/cake/app/tmp/cache/models] 合計 8