Cakephp权限被拒绝Fileengine.php
我正在运行以下cake命令: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
./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
,以解决此问题。还有许多其他选择。请参阅以了解文件权限概念。