我已经在网站上工作了大约一个月,我最近试图烘焙一些东西,现在我真的陷入了刚出现的缓存权限问题。我已经在这个问题上阅读了有关stackoverflow的所有内容,例如:
Cakephp Permission denied Fileengine.php
包括错误/非错误:http://cakephp.lighthouseapp.com/projects/42648/tickets/2172
但是,在使用HTML->脚本帮助程序插件加载javascript资源期间,我仍然无法阻止此错误出现。
警告: SplFileInfo ::中openFile(在/ var / WWW / 2tli /应用程序的/ tmp /缓存/永久/ myapp_cake_core_cake_console_): 无法打开流:权限被拒绝 第314行/var/www/2tli/lib/Cake/Cache/Engine/FileEngine.php
调用堆栈: 0.0009 352948 1. {main}()/var/www/2tli/app/webroot/index.php:0
0.0045 446644 2. include('/var/www/2tli/lib/Cake/bootstrap.php') /var/www/2tli/app/webroot/index.php:92 0.0327 1174292 3. Configure::bootstrap() /var/www/2tli/lib/Cake/bootstrap.php:171 0.0427 1406772 4. include('/var/www/2tli/app/Config/core.php') /var/www/2tli/lib/Cake/Core/Configure.php:78 0.0494 1512200 5. Cache::config() /var/www/2tli/app/Config/core.php:336 0.0495 1512940 6. Cache::_buildEngine() /var/www/2tli/lib/Cake/Cache/Cache.php:136 0.0562 1635708 7. FileEngine->gc() /var/www/2tli/lib/Cake/Cache/Cache.php:169 0.0562 1635796 8. FileEngine->clear() /var/www/2tli/lib/Cake/Cache/Engine/FileEngine.php:102 0.0617 1637516 9. FileEngine->_setKey() /var/www/2tli/lib/Cake/Cache/Engine/FileEngine.php:236 0.0627 1657060 10. trigger_error() /var/www/2tli/lib/Cake/Cache/Engine/FileEngine.php:314
我正在运行PHP 5.3.10。蛋糕2.3.7。我在bootstrap.php中有以下内容:
// Setup a 'default' cache configuration for use in the application.
Cache::config('default', array('engine' => 'File', 'mask' => 0666));
在core.php中:
/**
* Configure the cache used for general framework caching. Path information,
* object listings, and translation cache files are stored with this configuration.
*/
Cache::config('_cake_core_', array(
'engine' => $engine,
'prefix' => $prefix . 'cake_core_',
'path' => CACHE . 'persistent' . DS,
'serialize' => ($engine === 'File'),
'duration' => $duration,
'mask'=>0666 ));
Cache::config('_cake_model_', array(
'engine' => $engine,
'prefix' => $prefix.'cake_model_',
'path' => CACHE . 'models' . DS,
'serialize' => ($engine === 'File'),
'duration' => $duration,
'mask' => 0666
));
我的插件还有一个bootstrap.php:
Cache::config('UserPlugin', array(
'engine' => 'File',
'duration'=> '+3 months',
'path' => CACHE,
'prefix' => 'UserPlugin_',
'mask'=>0666
));
我已将所有app / tmp文件和文件夹作为我的apache所有者www-data并设置为777(我也尝试过666来匹配掩码)。
我也删除并重建了app / tmp目录。
有没有人有任何想法?
编辑:我不知道该怎么做,但我注意到Html->脚本助手的注释有时候不会删除错误(原始的html仍然显示包含为脚本)。所以我盯着删除缓存并将缓存持续时间设置为1秒。只是偶尔表现得像预期的那样,因为html似乎被缓存了。我发现始终如一地按预期工作(无论是在线上还是在线外)都是删除缓存并重新启动浏览器(firefox)的唯一方法。然后每当我重新启动firefox后再次输入html->脚本时,蛋糕将在没有权限错误的情况下工作。我确定问题会回来,因为我似乎无法找到根本原因。答案 0 :(得分:2)
我发现Bake这样做的问题是我的持久性缓存中的文件受限制的权限。这意味着我的网站创建了它们(www-data)并且没有为我的控制台应用程序提供使用该文件的完整读/写/执行权限。
我通过更改该永久文件夹中文件的权限来修复此问题
cd ./app/tmp/cache/persistent/
sudo chmod 777 *
我不得不使用sudo,因为我不是文件的所有者;网站(www-data)是。
希望这有助于某人。
答案 1 :(得分:0)
我仍然不清楚我的系统上发生了什么,但是我已经确认关闭浏览器并重新启动它可以解决这个问题。
我正在使用Firefox 23.0在我的本地系统上进行测试,使用的是firebug& firephp。
此外,我发现如果我在之前呈现的视图中通过帮助器添加$ this-> Js->链接,则新的JS脚本将不会出现,直到浏览器停止并重新启动。 (如果cakephp缓存被清除,则无关紧要。)
我不知道这是不是某种firefox / firebug或apache或cake问题。
编辑:我还发现将此文件移动到app / webroot / js而不是通过插件提供它可以100%的时间工作。也许在蛋糕如何获得资产方面存在一个错误?