我最近对我的 Symfony 2 站点进行了更改,然后在该站点上执行了清除缓存命令。之后,当我返回该站点时,页面是空白的。
这是我运行的命令
app/console cache:clear --env=prod
我听说这可能与缓存文件夹的文件权限有关,但我不确定。我以根级别登录以便能够运行上述命令,因为当我以用户级别登录时出现“访问被拒绝”错误。
任何帮助/见解将不胜感激。
您似乎以没有标志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
确保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