Cakephp权限被拒绝Fileengine.php

Cakephp权限被拒绝Fileengine.php,php,cakephp,file-permissions,Php,Cakephp,File Permissions,我正在运行以下cake命令: ./Console/cake schema create DbAcl 现在创建了数据库表,但最后我得到了以下错误: Warning: SplFileInfo::openFile(/var/www/bloglic-2013/cake/app/tmp/cache/persistent/myapp_cake_core_object_map): failed to open stream: Permission denied in /var/www/bloglic-201

我正在运行以下cake命令:

./Console/cake schema create DbAcl
现在创建了数据库表,但最后我得到了以下错误:

Warning: SplFileInfo::openFile(/var/www/bloglic-2013/cake/app/tmp/cache/persistent/myapp_cake_core_object_map): failed to open stream: Permission denied in /var/www/bloglic-2013/cake/lib/Cake/Cache/Engine/FileEngine.php on line 313


Warning Error: SplFileInfo::openFile(/var/www/bloglic-2013/cake/app/tmp/cache/persistent/myapp_cake_core_file_map): failed to open stream: Permission denied in [/var/www/bloglic-2013/cake/lib/Cake/Cache/Engine/FileEngine.php, line 313]

Warning Error: _cake_core_ cache was unable to write 'file_map' to File cache in [/var/www/bloglic-2013/cake/lib/Cake/Cache/Cache.php, line 309]

Warning Error: SplFileInfo::openFile(/var/www/bloglic-2013/cake/app/tmp/cache/persistent/myapp_cake_core_method_cache): failed to open stream: Permission denied in [/var/www/bloglic-2013/cake/lib/Cake/Cache/Engine/FileEngine.php, line 313]

Warning Error: _cake_core_ cache was unable to write 'method_cache' to File cache in [/var/www/bloglic-2013/cake/lib/Cake/Cache/Cache.php, line 309]
现在,我将chmod755添加到所有文件夹中,并重新执行该命令,但没有任何运气。有人能告诉我怎么解决这个问题吗

更新

更多信息:

以下是我对上述文件夹的权限:

marc@Marc> cd /var/www/bloglic-2013/cake
marc@Marc> ls -ld app/tmp/cache/persistent/
drwxrwxrwx 2 marc marc 4096 Aug 13 22:50 app/tmp/cache/persistent/

marc@Marc> chmod 755  app/tmp/cache/persistent/
marc@Marc> ls -ld lib/Cake/Cache/
drwxrwxr-x 3 marc marc 4096 Aug  2 10:16 lib/Cake/Cache/

marc@Marc> ls -ld lib/Cake/Cache/Cache.php
-rwxr-xr-x 1 marc marc 16179 Aug  2 10:16 lib/Cake/Cache/Cache.php

marc@Marc> ls -ld lib/Cake/Cache/Engine/
drwxr-xr-x 2 marc marc 4096 Aug  2 10:16 lib/Cake/Cache/Engine/

marc@Marc> ls -ld lib/Cake/Cache/Engine/FileEngine.php 
-rwxr-xr-x 1 marc marc 9759 Aug  2 10:16 lib/Cake/Cache/Engine/FileEngine.php

marc@Marc> ls -ld lib/Cake/Cache/Cache.php
-rwxr-xr-x 1 marc marc 16179 Aug  2 10:16 lib/Cake/Cache/Cache.php
还要注意的是,如果没有相同的消息,我无法打开或运行任何操作和视图

更多信息

marc@Marc /var/www/bloglic-2013/cake $ ls -l app/tmp/cache/persistent/
total 44
-rw-r--r-- 1 www-data www-data  945 Aug 13 18:45 controllers_hashes.txt
-rw-rw-r-- 1 www-data www-data   43 Aug 13 18:53 myapp_cake_core_acl_en-us
-rw-rw-r-- 1 marc     marc       43 Aug 13 23:04 myapp_cake_core_cake_console_
-rw-rw-r-- 1 marc     marc       43 Aug 13 23:04 myapp_cake_core_cake_dev_
-rw-rw-r-- 1 www-data www-data   43 Aug 13 22:59 myapp_cake_core_cake_dev_en-us
-rw-rw-r-- 1 www-data www-data   43 Aug 13 22:59 myapp_cake_core_cake_en-us
-rw-rw-r-- 1 www-data www-data   43 Aug 13 22:59 myapp_cake_core_default_en-us
-rw-rw-r-- 1 www-data www-data 5686 Aug 13 22:59 myapp_cake_core_file_map
-rw-rw-r-- 1 www-data www-data  163 Aug 13 22:59 myapp_cake_core_method_cache
-rwxr-xr-x 1 marc     marc      441 Aug 13 22:21 myapp_cake_core_object_map
您(用户
marc
)不在组
www-data
,因此您没有对文件的写入权限:

myapp_cake_core_file_map
myapp_cake_core_method_cache
我建议删除这些文件,为所有
tmp
文件夹设置
chmod755
,然后让CakePHP创建它们。要让CakePHP创建tmp文件,只需访问应用程序的任何网页,而不是运行console命令

然后您将看到谁是文件的所有者,并且您将知道应用程序运行的用户

如果在此之后需要使用cake控制台命令,只需将自己添加到应用程序组:

usermod -a -G www-data marc

我猜试图访问缓存文件的用户/进程不是marc,并且没有写权限。请尝试777或将用户更改为marc@Elpy他试图从控制台执行命令
/Console/cake schema create DbAcl
,所以他可能是marc.marc,您是否已经有文件
myapp\u-cake\u-core\u-object\u-map
myapp\u-cake\u-core\u-file\u-map
等?你能显示ls-l app/tmp/cache/persistent/(列表文件)吗?也许您试图覆盖它们,但没有权限访问文件本身,而不是目录。@SergeS。我添加了该命令的输出use
-l
选项(减l,而不是减1)。我需要一个长列表来查看权限和所有者。无论如何,如果你删除这些文件,你可能会成功。usermod-a-G marc给usermod:Permission denied。usermod:无法锁定/etc/passwd;请稍后再试尝试
sudo usermod…
。你可能没有这样做的权利,除非你知道管理员。如果我尝试这样做,我仍然无法访问该文件,并且只有当我删除这些文件时,该漏洞才会继续存在,我可以通过这些文件而无需警告。如果我做755,并让CakePHP重新创建文件,它不会继续,因为它的权限被拒绝。这意味着什么?您将如何修复它?
chmod 755
只允许为文件夹所有者编写。如果
tmp/models
的所有者不是
www-data
,那么CakePhp将无法创建这些文件。您可以使用命令
chown
将文件夹的所有权更改为
www-data
,以解决此问题。还有许多其他选择。请参阅以了解文件权限概念。