Ubuntu14.04 上 Symfony2 的缓存权限

Cache permissions for Symfony2 on Ubuntu14.04

根据我对 Stack Overflow 的全面搜索,这个问题很受欢迎,但 none 个解决方案适用于我的情况。

问题出在新鲜 app/cacheapp/logs 这两个文件夹的权限上=]Symfony2 安装.

我已经尝试了 http://symfony.com/doc/current/book/installation.html#configuration-and-setup 中的教程,但它对我不起作用。

我是 运行 Apache 2.4.18,在 Ubuntu 14.04.

当我通过浏览器查看config.php文件时,提示我需要更改文件夹[=42=的权限]app/logs

当前权限状态:

# l app/logs
total 632K
drwxrwxrwx+ 2 www-data www-data 4.0K Feb  3 09:35 ./
drwxrwxr-x+ 7 www-data www-data 4.0K Feb  2 16:11 ../
-rwxrwxrwx+ 1 www-data www-data 617K Feb  3 09:36 dev.log*
-rwxrwxrwx+ 1 www-data www-data    0 Feb  2 09:51 .gitkeep*

# l app/cache
total 12K
drwxrwxrwx+ 2 www-data www-data 4.0K Feb  3 10:02 ./
drwxrwxr-x+ 7 www-data www-data 4.0K Feb  2 16:11 ../
-rwxrwxrwx+ 1 www-data www-data    0 Feb  2 09:51 .gitkeep*

# getfacl app/cache
# file: app/cache
# owner: www-data
# group: www-data
user::rwx
user:root:rwx
user:www-data:rwx
group::r-x
mask::rwx
other::rwx
default:user::rwx
default:user:root:rwx
default:user:www-data:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

# getfacl app/logs
# file: app/logs
# owner: www-data
# group: www-data
user::rwx
user:root:rwx
user:www-data:rwx
group::r-x
mask::rwx
other::rwx
default:user::rwx
default:user:root:rwx
default:user:www-data:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

如有任何帮助,我们将不胜感激。

确保您从项目根目录中运行 执行了以下命令。 (如果您遵循 symfony 3,路径与说明不同)

$ HTTPDUSER=`ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`
$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache
$ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache

如果您运行正在使用 Symfony 2.8+,那么您需要将最后两行更改为(以适应更新的目录结构):

$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX var
$ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX var

显然,出于某种原因,并非所有 Apache 进程都是 运行 通过 www-data 的,当它试图访问文件时,它们是通过没有写权限的组 www-data 访问的。

通过使用 acl 包,我只需要为组 www-data 添加权限,它就按预期工作了。

setfacl -R -m g:www-data:rwX app/logs app/cache
setfacl -dR -m g:www-data:rwX app/logs app/cache