pen*_*egg 21 cakephp cakephp-2.0 cakephp-2.1
我正在开发CakePHP 2项目.它最初从2.0.x开始,然后最近迁移到2.1.0.在整个开发过程中,我一直收到以下错误消息.
它不可预测地弹出页面顶部.它可能是我只是在查看不同的页面,甚至在我向数据库添加记录之后(但记录正确保存).
Warning:
SplFileInfo::openFile(/var/www/cake_prj/app/tmp/cache/persistent/cake_core_cake_console_):
failed to open stream:
Permission denied in
/var/www/cake_prj/lib/Cake/Cache/Engine/FileEngine.php on line 293
Run Code Online (Sandbox Code Playgroud)
我以递归方式将tmp文件夹的所有者和组设置为apache,并仍然收到该消息.另外,我然后递归地设置读取,写入和执行所有权限(chmod 777).错误消息仍然会弹出.
即使在更改了所有者,组和权限之后,相关文件仍然存在:
cake_prj/app/tmp/cache/persistent/cake_core_cake_console_
Run Code Online (Sandbox Code Playgroud)
将其所有者和组设置回root,并将其权限设置回默认值.
什么可能导致这个问题?有没有办法确保每次生成此文件时,它始终都是apache:具有读/写/执行权限的apache?
rtc*_*ner 26
您可以通过在core.php中为配置添加掩码来解决此问题
Cache::config('default', array(
'engine' => 'File',
'mask' => 0666,
));
Run Code Online (Sandbox Code Playgroud)
nIc*_*IcO 15
那里有一个错误报告http://cakephp.lighthouseapp.com/projects/42648/tickets/2172但它被认为不是一个错误.
我个人注意到的是,当您cake在控制台中使用脚本时,可能会修改某些文件所有者(例如,创建一个bake).然后,修改后的文件属于您在控制台中使用的用户.
这是否意味着你cake在成为root时打电话?或者你有任何调用Cake shell脚本的root cron作业?
Personaly我现在习惯了chmod在使用cake脚本后将整个tmp文件夹内容返回给apache用户,它似乎可以防止出现警告.
我没有设置给tmp/cache目录中的每个人提供读/写访问权限,而是这样做:
chgrp -R www-data app/tmp
chmod -R g+rw app/tmp
find app/tmp -type d -exec chmod g+s {} \;
Run Code Online (Sandbox Code Playgroud)
将目录组设置为Apache用户然后设置setgid位将允许您确保在该目录中创建的文件获得正确的组权限,而不管用户运行shell脚本的是什么.这也允许您排除对"其他"用户的读/写权限.