【问题标题】:Special Symfony2 cache file permission issue on MacMac 上的特殊 Symfony2 缓存文件权限问题
【发布时间】:2016-04-15 01:22:48
【问题描述】:

我已经阅读了有关 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

然后我只需通过浏览器调用该网站。开发目录已创建。权限如下:

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/app/cache/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。我猜 cache: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 中的文件信息对话框并为缓存或 dev 以及所有子文件夹或“/Workspace/ACME_Compliance_Tool_HEAD”中的整个文件夹结构授予读取和写入 _www 完全没有效果。

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

结果 每次我必须使用创建/更改/删除文件的控制台命令时,我最终都会 chmodding。到时候就很烦了。

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

【问题讨论】:

  • 正常的,你创建文件的时候,文件是属于你的吧?阅读如何设置权限:symfony.com/doc/current/book/…
  • 嗨马尔科姆,感谢您的回复。我应该提到我仔细阅读了这篇文章并尝试了每一个选项。

标签: macos apache symfony file-permissions


【解决方案1】:

没找到原因,但找到了解决办法:

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

【讨论】:

  • 有趣的是,它仅在解压缩到新的未使用目录时才有效。当我删除旧的,将其解压缩到相同的位置时,我似乎再次“继承”了同样的问题。我猜不是来自父目录,在我的情况下这是 /Workspace 并且 Workspace 中的其他项目从未遇到过问题。只是我从客户那里得到的这个项目。
  • 这太棒了:)
猜你喜欢
  • 2013-04-12
  • 2014-12-20
  • 1970-01-01
  • 2012-07-13
  • 1970-01-01
  • 2016-04-29
  • 2017-08-17
  • 2018-05-22
  • 1970-01-01
相关资源
最近更新 更多