9

我尝试了一些方法来授予cache&logs文件夹的权限,但是每当我清除缓存时,就会出现问题,例如无法写入目录。

我试过这两种方法:

  1. 通过具有权限的root用户完全访问缓存。777
  2. www-data像Symfony2 文档中所说的那样更改所有者。

但这对我不起作用。

4

6 回答 6

8

解决方案:

如果站点面向全球,如果您关心安全性,请不要禁用 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 有一个好处,现在您需要检查以确保您的 Web 服务器用户httpd,apachewwwdata添加到您的用户组中,无论您的用户所在的组是什么。这样,当 apache 写入您的 symfony 目录时当您运行缓存清除时,用户已通过资产重新编译,例如,您的用户组的g部分ugo将允许apache用户对这些目录内容的权限。

于 2015-07-22T08:17:58.187 回答
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
于 2013-05-22T14:43:52.767 回答
3

为什么会发生

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

解决方案

我的建议是网络服务器用户(可能是 www-data)添加到您的用户组从您的用户运行网络服务器 - 您将永远忘记此类问题;)

类似的问题,解释清楚的答案: Symfony2 上的权限问题

于 2012-07-24T13:19:41.530 回答
2

请参阅配置和设置部分中的设置权限旁注。我建议使用该方法。setfacl

于 2012-07-17T10:29:03.327 回答
-2

临时解决方案:

永久禁用 SElinux

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

注意:禁用 SElinux 是不安全的,但对于开发环境来说没关系。

永久解决方案:

处理权限问题的好方法是按照官方指南设置权限。

于 2012-07-28T05:39:59.047 回答
-3

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

echo 0 > /selinux/enforce
于 2012-07-28T05:34:24.063 回答