Symfony 2.0中缓存和日志文件夹中的权限问题

时间:2012-07-17 10:14:36

标签: symfony

我已经尝试过一些方法来批准cache& logs文件夹,但每当我清除缓存时,就会出现无法在目录中写入的问题。

我尝试过这两种方式:

  1. 通过具有root权限的777用户完全访问缓存。
  2. 按照Symfony2文档中的说明更改所有者www-data
  3. 但它对我不起作用。

6 个答案:

答案 0 :(得分:7)

如果你不想关闭SElinux,这是一个解决方案:

cd your/symfo/app
chcon -R -t public_content_rw_t app/cache
chcon -R -t public_content_rw_t app/logs
setsebool -P allow_httpd_anon_write 1

答案 1 :(得分:5)

解决方案:

如果您关心安全性,如果该网站无论如何都要面向全球,请不要禁用SELinux。在这种情况下,你会想要"使用" SELinux,没有禁用它,它有一个原因。

我这样做;

# chcon -R -t httpd_sys_script_rw_t /var/www/symfonyapp/app/cache
# chcon -R -t httpd_sys_script_rw_t /var/www/symfonyapp/app/logs
# apachectl restart #(or systemctl restart httpd) or (service restart httpd) to restart your server, a reboot will suffice as well.

是的,@ Viataley有一个好处,现在您需要检查以确保您的网络服务器用户httpdapachewwwdata已添加到您的用户组,您的用户所在的任何组。这种方式当apache写入您运行缓存的用户已通过资产重新编译的symfony目录时,例如g部分ugo部分是您的用户组,将允许apache用户对这些目录内容的权限。

答案 2 :(得分:3)

为什么会发生

发生此类问题时最常见的情况 - 当您的Web服务器用户无权写入项目所属的文件夹时。实际上,更改app / cache和app / logs的所有者并不总是有帮助,因为您可能希望运行一些测试或控制台命令,这些命令是从您的用户执行的(php-cli / php-fpm)。因此,将从您当前的用户创建缓存或日志文件夹,并且Web服务器用户将无权访问它。

解决方案

我的建议是要么将web服务器用户(可能是www-data)添加到用户组从您的用户运行Web服务器 - 而您永远忘记这个问题;)

类似的问题,解释清楚的答案: Permissions issues on Symfony2

答案 3 :(得分:2)

请参阅 Configuration and Setup 部分中的设置权限旁注。我建议使用setfacl方法。

答案 4 :(得分:-1)

永久禁用SElinux

要永久禁用SElinux,您需要编辑SElinux的配置文件/ etc / selinux / config并添加/更改行禁用它: SELINUX =禁用

答案 5 :(得分:-3)

使用以下命令以su user身份关闭SELinux安全性。

echo 0 > /selinux/enforce