CakePHP 2.0 - Cake无法写入文件缓存

时间:2011-09-28 14:00:26

标签: file caching cakephp fopen

我正在使用CakePHP 2.0 RC-1。从SVN签出项目后,应用程序开始抱怨它无法将缓存文件写入tmp / cache目录。由于这是本地的,我知道该目录是可写的,我可以清楚地看到目录甚至填满了文件,所以错误有点奇怪。

以下是我遇到的一些错误:

_cake_core_ cache was unable to write 'cake_dev_nb' to File cache

fopen(c:\cake\app\tmp\cache\models\cake_model_default_media) [function.fopen]: failed to open stream: No error [CORE\Cake\Cache\Engine\FileEngine.php, line 127]

没有错误?!相机连?

现在,如果我查看FileEngine文件,则在第127行显示:

if (!$handle = fopen($this->_File->getPathName(), 'c')) {
            return false;
}

将“c”替换为“w”,不会遇到任何错误,一切正常。但是,没有必要修改核心Cake库来解决这个问题。让我在我的另一台计算机上重复这一点,它可以按预期工作,而无需编辑核心库。两者都使用Windows操作系统,对tmp / cache-folder的读/写权限完全相同。

编辑:这是一个体验我本地错误输出的网站

Googling找到的示例网站。不是我的网站:http://www.12h30.net/credit/

有什么建议吗?

更新:原因如下:如果您的版本太低,在5.2.6之前就会导致这种情况,如评论中“api55”所述。谢谢回复。希望这对你也有帮助。

4 个答案:

答案 0 :(得分:24)

嗯,在我的情况下,当我检查我的应用时,它没有/tmp文件夹。然后我创建了结构(/tmp/cache/models/tmp/cache/persistent),一切运作良好。这件事发生在我身上,也许是git忽略空文件夹,所以没有创建它们。

答案 1 :(得分:17)

我遇到了类似的问题,那是因为我已经在app / tmp目录中输入-R www来让Cake正常运行而不给每个人写入权限。在开发过程中,使用控制台和Web的唯一方法是给每个人写入权限,或者将自己添加到www组中。

简易解决方案:

  

chmod -R 777 app / tmp

  

chown -R username app / tmp

使用控制台和

  

chown -R www app / tmp

使用网页时

答案 2 :(得分:2)

只需将CHMOD776可以正常工作)放到app/tmp

答案 3 :(得分:0)

对于具有相同错误/警告的Windows用户:确保以提升模式运行命令提示符;)