4

我最近对我的 Symfony 2 站点进行了更改,然后在该站点上执行了清除缓存命令。之后,当我返回该站点时,页面是空白的。

这是我运行的命令

app/console cache:clear --env=prod

我听说这可能与缓存文件夹的文件权限有关,但我不确定。我以根级别登录以便能够运行上述命令,因为当我以用户级别登录时出现“访问被拒绝”错误。

任何帮助/见解将不胜感激。

4

2 回答 2

9

您似乎以没有标志cache:clear的 root 用户身份运行。--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
于 2013-07-18T17:21:37.050 回答
4

确保Web 服务器用户和 CLI 用户app/cache的和权限app/logs设置正确。 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

于 2013-07-18T17:40:46.097 回答