我正在制作一个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
和dev.log文件:
be opened: failed to open stream: Permission denied-rw-r--r-- 1 www-data www-data 2840530 Feb 29 15:01 dev.log
答案 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命令,然后重新初始化文件夹权限。