我已经尝试过一些方法来批准cache
& logs
文件夹,但每当我清除缓存时,就会出现无法在目录中写入的问题。
我尝试过这两种方式:
root
权限的777
用户完全访问缓存。www-data
。 但它对我不起作用。
答案 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有一个好处,现在您需要检查以确保您的网络服务器用户httpd
,apache
或wwwdata
已添加到您的用户组,您的用户所在的任何组。这种方式当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