我最近对Symfony 2网站进行了更改,然后在网站上执行了清除缓存命令。之后当我回到网站时,页面都是空白的。
这是我跑的命令
app/console cache:clear --env=prod
我听说它可能与缓存文件夹上的文件权限有关,但我不确定。 我在根级别登录以便能够运行上述命令,因为当我在用户级别登录时,我收到了“访问被拒绝”错误。
非常感谢任何帮助/见解。
答案 0 :(得分:8)
您似乎以root用户身份运行cache:clear
而没有--no-warmup
标记。
现在symfony在使用root帐户清除缓存之后已对其进行了预热,这将导致新创建的缓存文件归root用户所有。根据您的umask
,网络服务器用户现在可能没有r + w访问这些文件。
确保您的webserver-user / cgi-user具有对缓存文件夹的读写权限,或者将所有权归还给该用户。
sudo chown webserver_user:webserver_group -R app/cache
sudo chmod 770 -R app/cache # or use acl to permit read/write to your webserver-user
答案 1 :(得分:3)
确保为 Web服务器用户和CLI用户正确设置了app/cache
和app/logs
的权限。
The Symfony Book有关于如何操作的说明。
如果您的操作系统支持chmod +a
(OSX),您可以执行以下操作:
$ rm -rf app/cache/*
$ rm -rf app/logs/*
$ sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
如果您的操作系统支持setfacl
(例如Ubuntu)并且启用了ACL支持,您可以执行以下操作:
$ sudo setfacl -R -m u:www-data:rwX -m u:`whoami`:rwX app/cache app/logs
$ sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs
注意:这两个示例均假定Web服务器用户的用户名为www-data