CakePHP写入缓存时偶然出现错误警告

前端之家收集整理的这篇文章主要介绍了CakePHP写入缓存时偶然出现错误警告前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用MAMP在本地开发Cake PHP 2.2站点.每隔一段时间,我就会得到一个或多个与此类似的警告,关于无法写入一个或多个缓存文件
Warning: SplFileInfo::openFile(/Applications/MAMP/htdocs/mywebsite/www/app/tmp/cache/persistent/myapp_cake_core_cake_console_en-au): Failed to open stream: Permission denied in /Applications/MAMP/htdocs/mywebsite/www/lib/Cake/Cache/Engine/FileEngine.PHP on line 313

奇怪的是,/ tmp是777,tmp / cache是​​777,而tmp / cache / persistent是777(不要担心……服务器上不会是777!). tmp / cache / persistent中的文件本身是644 – 但我认为Cake正在创建和管理该文件,并且使用它所需的权限.

如果我只刷新页面,则错误消失(然后稍后重新出现).我没有做任何明确的缓存,所以这个东西就是Cake正在做它自动做的事情.

所以我的问题是:

a)Cake的自动缓存是如何工作的?它是否尝试在每次刷新页面时写入该文件,并且偶尔会失败一次?或者它只是尝试偶尔写入该文件,但每次尝试都失败?

b)如果它只是偶尔失败一次,我可以安全地忽略它吗?如果它每次尝试失败,我该如何解决

在此先感谢您的帮助!

当与Apache不同的进程在缓存中创建文件时,可能会发生这种情况.例如,当您运行shell命令时可能就是这种情况,因为您可能以与Apache不同的用户身份执行此操作.

默认情况下,文件高速缓存创建具有权限的文件,只允许创建文件用户修改它们,但这可以通过在core.PHP中的高速缓存配置中设置掩码来修复:

Cache::config('_cake_core_',array(
    'engine' => $engine,'prefix' => 'cake_core_','path' => CACHE . 'persistent' . DS,'serialize' => ($engine === 'File'),'duration' => $duration,'mask' => 0666
));

Cache::config('_cake_model_','prefix' => 'cake_model_','path' => CACHE . 'models' . DS,'mask' => 0666
));
原文链接:https://www.f2er.com/php/132792.html

猜你在找的PHP相关文章