Ubuntu14.04 上 Symfony2 的缓存权限
Cache permissions for Symfony2 on Ubuntu14.04
根据我对 Stack Overflow 的全面搜索,这个问题很受欢迎,但 none 个解决方案适用于我的情况。
问题出在新鲜 app/cache 和 app/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
根据我对 Stack Overflow 的全面搜索,这个问题很受欢迎,但 none 个解决方案适用于我的情况。
问题出在新鲜 app/cache 和 app/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