加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 16:27:37 所属栏目:PHP教程 来源:网络整理
导读:我正在使用MAMP在本地开发Cake PHP 2.2站点.每隔一段时间,我就会得到一个或多个与此类似的警告,关于无法写入一个或多个缓存文件: Warning: SplFileInfo::openFile(/Applications/MAMP/htdocs/mywebsite/www/app/tmp/cache/persistent/myapp_cake_core_cake_
我正在使用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
));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读