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

Cor*_*eus 17 fopen caching cakephp file

我正在使用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]
Run Code Online (Sandbox Code Playgroud)

没有错误?!WTH?

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

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

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

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

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

有什么建议?

更新:原因如下:如果你的5.2版之前的PHP版本太低,则会引起这种情况,如评论中的"api55"所述.谢谢回复.希望这对你也有帮助.

Sha*_*had 24

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


Ian*_*ill 17

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

简易解决方案

chmod -R 777 app/tmp

要么

chown -R username app/tmp

使用控制台和

chown -R www app/tmp

使用网络时

  • chmod 777永远不是任何答案,这是完全错误和不安全的! (9认同)

小智 3

只需赋予权利CHMOD776对我来说效果很好)app/tmp