Mac上的特殊Symfony2缓存文件权限问题

时间:2016-01-10 19:04:52

标签: macos apache symfony file-permissions

我已经阅读了有关symfony和权限问题的多个问题。

我的问题是: 当cache:clear创建目录时,apache无法访问缓存。 当apache在页面调用上创建目录时,cache:clear无法访问。

有趣的是,它只发生在一个项目中(我从客户那里获得)。 在所有其他方面,它从双方都有效。所以具有权限的东西似乎是错误的。

首先,我删除了app / cache中的所有文件夹。 然后我设置了sudo chmod -R 777 app/cache

我们现在应该有一个干净的开始。

测试1

现在我运行app / dev cache:clear。将创建文件夹dev和prod。 我看一下dev文件夹的权限:

crismancich (me) - Custom _www - Custom crismancich (me) - Read & Write wheel - Read only everyone - Read only

因此,apache将无法在缓存中写入。

测试2

现在我尝试另一个方向。我再次通过sudo rm -r app/cache/*删除子文件夹并设置sudo chmod -R 777 app/cache

然后我只需通过浏览器呼叫网站。 dev目录已创建。权限如下:

crismancich (me) - Custom _www - Custom _www - Read & Write wheel - Read only everyone - read only

现在apache可以访问这些文件。但是当我使用app/console cache:clear时,我得到了......

`[RuntimeException]出版物
  无法写入缓存目录(/ Workspace / ACME_Compliance_Tool_HE
  AD / ComplianceTool /应用程序/高速缓存的/ dev)

其他测试

当我从这里开始并再次触发递归chmod时,app/console cache:clear至少会开始但是会陷入更深层次的错误......

[Symfony\Component\Filesystem\Exception\IOException]
Failed to remove file /Workspace/ACME_Compliance_Tool_HEAD/ComplianceTool/
app/cache/dev_old/profiler/81/27/ba2781

实际上没有app/cache/dev_old。我想缓存:clear会先重命名然后删除目录。看起来重命名不起作用,并且不会处理此错误。

如果我使用sudo app/console cache:clear,它会起作用,但是再次apache无法访问这些文件,并会留下一个空白页面并显示错误:

PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Failed to write cache file "/Workspace/ACME_Compliance_Tool_HEAD/ComplianceTool/app/cache/dev/classes.php".' in /Workspace/ACME_Compliance_Tool_HEAD/ComplianceTool/vendor/symfony/symfony/src/Symfony/Component/ClassLoader/ClassCollectionLoader.php:205

在finder中使用文件信息对话框并授予Read&写入_www for cache或dev和所有子文件夹或“/ Workspace / ACME_Compliance_Tool_HEAD”中的整个文件夹结构完全没有效果。

A sudo chmod -R 777 app/cache让apache再次创建缓存文件,但是再次,cache:clear无法删除apache创建的文件。

结果 每次我必须使用创建/更改/删除文件的控制台命令时,我最终都会进行chmodding。到那时候非常讨厌。

我的问题 为什么它适用于不同的项目?问题在哪里?

1 个答案:

答案 0 :(得分:0)

我没有找到原因,但我找到了解决方案:

我压缩了文件并将它们解压缩到一个新目录。这样我似乎已经摆脱了许可问题。