Symfony缓存:清除命令更改文件夹所有者

时间:2016-02-29 13:11:04

标签: php symfony caching

我正在制作一个Symfony项目,在运行sudo php app/console cache:clear --env=prod后,该文件夹的权限变为

drwxr-xr-x 11 root root 4096 Feb 29 15:08 prod

这不允许用户www-data(apache默认用户)再访问它。

如何清除缓存并将www-data读/写到缓存文件夹?

此外,我为开发模式运行php console cache:clear 已使用以下权限创建The stream or file "../app/logs/dev.log" could not
be opened: failed to open stream: Permission denied
和dev.log文件: -rw-r--r-- 1 www-data www-data 2840530 Feb 29 15:01 dev.log

3 个答案:

答案 0 :(得分:8)

请参阅http://symfony.com/doc/current/book/installation.html#configuration-and-setup中的“设置权限”。

如果您使用Ubuntu,则可以使用setfacl

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

修改

$ rm -rf var/cache/* var/logs/* var/sessions/*

$ 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 chmod -R +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" var
$ sudo chmod -R +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" var

如果您的电脑上没有命令setfacl,则需要安装它;

sudo apt-get install acl

答案 1 :(得分:0)

您是否以 root 身份运行 console/bin? 如果您正在运行一个很长的脚本,但请尝试:

chown -R webuser:webuser /var

如果直接输入命令,请

su webuser

答案 2 :(得分:-1)

我们遇到了同样的问题,我们最终以Apache用户身份运行了cache:clear命令。

另一个选项是让脚本以sudo的身份运行cache clear命令,然后重新初始化文件夹权限。