Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony缓存:清除命令更改文件夹所有者_Php_Symfony_Caching - Fatal编程技术网

Php 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

我有一个Symfony项目正在生产中,在运行
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等)您需要与该组合作。