我正在使用 MAMP 在本地开发一个 CakePHP 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)如果它只是偶尔失败一次,我可以放心地忽略它吗?如果每次尝试都失败,我该如何解决?
提前感谢您的帮助!