【问题标题】:Cakephp Permission denied Fileengine.phpCakephp 权限被拒绝 Fileengine.php
【发布时间】:2013-08-15 15:56:25
【问题描述】:

我正在运行以下 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]

现在我将 chmod 755 添加到所有文件夹,并重新执行命令,但没有任何运气。谁能告诉我如何解决这个问题?

更新

升技更多信息:

这是我对上述文件夹的权利:

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,并且没有写权限。尝试 777 或将用户更改为 marc
  • @Elpy 他试图从控制台执行命令./Console/cake schema create DbAcl,所以他可能是marc。
  • Marc,你有文件myapp_cake_core_object_map、myapp_cake_core_file_map 等吗?你能显示ls -l app/tmp/cache/persistent/(列出文件)吗?也许您尝试覆盖它们,但没有文件本身的权限,而不是目录。
  • @SergeS。我添加了该命令的输出
  • 使用 -l 选项(减 L,而不是减一)。我需要一个长列表来查看权限和所有者。无论如何,如果你删除这些文件,你可能会成功。

标签: php cakephp file-permissions


【解决方案1】:

您(用户 marc)不在组 www-data 中,因此您没有文件的写入权限:

myapp_cake_core_file_map
myapp_cake_core_method_cache

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

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

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

usermod -a -G www-data marc

【讨论】:

  • usermod -a -G marc 给出 usermod:权限被拒绝。 usermod:无法锁定 /etc/passwd;稍后再试
  • 试试sudo usermod ...。除非您认识管理员,否则您可能无权执行此操作。
  • 如果我尝试这个,我仍然无法访问该文件,并且只有当我删除那些我可以在没有警告的情况下通过的文件时,该缺陷才会继续
  • 如果我做 755,让 CakePHP 重新创建文件,它不会因为它有权限被拒绝。这是什么意思,您将如何解决?
  • chmod 755 只允许为文件夹的所有者写入。如果tmp/models 的所有者不是www-data,那么CakePhp 将无法创建这些文件。您可以使用命令chown 将文件夹的所有权更改为www-data 来解决此问题。还有许多其他选择。请参阅linux.org/threads/file-permissions-chmod.4094 了解文件权限概念。
猜你喜欢
  • 2014-03-24
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2018-07-19
  • 2018-02-05
  • 2015-04-28
相关资源
最近更新 更多