Php Symfony缓存:清除命令更改文件夹所有者
我有一个Symfony项目正在生产中,在运行Php Symfony缓存:清除命令更改文件夹所有者,php,symfony,caching,Php,Symfony,Caching,我有一个Symfony项目正在生产中,在运行sudophp应用程序/控制台缓存:clear--env=prod后,文件夹的权限变为 drwxr-xr-x 11根根目录4096二月29日15:08产品 这不允许用户www-data(apache默认用户)再访问它 如何清除缓存并将www数据读/写到缓存文件夹 另外,运行php控制台缓存:对于我得到的开发模式清除 流或文件“./app/logs/dev.log”无法执行 被打开:无法打开流:权限被拒绝,并且已使用以下权限创建dev.log文件: -r
sudophp应用程序/控制台缓存:clear--env=prod
后,文件夹的权限变为
drwxr-xr-x 11根根目录4096二月29日15:08产品
这不允许用户www-data
(apache默认用户)再访问它
如何清除缓存并将www数据读/写到缓存文件夹
另外,运行php控制台缓存:对于我得到的开发模式清除
流或文件“./app/logs/dev.log”无法执行
被打开:无法打开流:权限被拒绝
,并且已使用以下权限创建dev.log文件:
-rw-r--r--1 www-data www-data 2840530-Feb 29 15:01 dev.log
我们遇到了同样的问题,我们最终以Apache用户的身份运行了cache:clear命令
另一个选项是让脚本以sudo的身份运行cache clear命令,然后重新初始化文件夹权限。请参阅中的“设置权限”
如果你使用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
您是否以root用户身份运行console/bin?
如果正在运行长脚本,请尝试:
chown -R webuser:webuser /var
如果您直接输入命令,请
su webuser
sudo-u{owner}php缓存:clear-eprod
我不建议您使用此命令清理缓存。我发现它并不总是删除那些文件。而是手动删除缓存中的prod和dev目录/不要将其作为sudo运行。除非您指定,否则cache:clear将在清除其缓存后执行“预热”。这意味着它将创建缓存目录的基本文件夹结构。结果权限将是root(如果从sudo运行),这不仅仅是缓存清除命令。这也是数据库创建、模式更新和尝试在dev.log中写入的所有内容,不是我的下一票,而是像sudo那样运行控制台命令会让你陷入一个痛苦的世界。我刚刚运行了这些命令,但是dev.log文件仍然不可写。我不能运行任何命令-rw-r--r--1 www-data www-data 3083769-Feb 29 15:36 dev.log-rw-r--r--1 www-data www-data 1728-Feb 29 14:51 prod.log
您只收到日志或缓存仍抛出错误的错误?只收到日志。缓存从不抛出错误。只是命令试图写入dev.log。是的,在它们被删除后,它们是使用以下权限生成的:-rw-rw-r--+1 www-data www-data www-data 342359-Feb 29 15:44 dev.log-rw-r--+1 www-data www-data 859-Feb 29 15:52 prod.log
,这似乎没问题。是的,导致一些命令从web服务器调用(apache、nginx等)您需要与该组合作。