Caching Symfony 2缓存清除问题

Caching Symfony 2缓存清除问题,caching,symfony,cache-control,Caching,Symfony,Cache Control,我的Symfony 2网站最近在我尝试清除缓存时出现问题。 我在终端中键入以下命令: php app/console cache:clear --env=dev 并获取以下错误: [ErrorException]

我的Symfony 2网站最近在我尝试清除缓存时出现问题。 我在终端中键入以下命令:

php app/console cache:clear --env=dev
并获取以下错误:

[ErrorException]                                                                                                                                                                                                                                   
 Warning: rename(/var/www/corpsite/corpsite/app/cache/dev,/var/www/corpsite/corpsite/app/cache/dev_old): Directory not empty in /var/www/corpsite/corpsite/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php line 74  
因此,我将该文件的权限更改为777,并重新运行clear cache命令,这会导致以下错误:

  [ErrorException]                                                                                                                                                                                                                         
  Warning: unlink(/var/www/corpsite/corpsite/app/cache/dev_old/twig/6b/e9/4491e41b895786689b86f32f446f.php): Permission denied in /var/www/corpsite/corpsite/vendor/symfony/src/Symfony/Component/HttpKernel/Util/Filesystem.php line 100  

我可以通过删除“dev_old”文件夹来解决此问题,但我想解决导致此问题的问题

另外,我知道该网站正在开发模式下运行。该网站已经上线10个月了,这以前从来都不是问题


感谢您的帮助

您需要获得对缓存和日志文件夹的访问权限。为此,您可以按照此处给出的指示进行操作:

根据您的操作系统,有几种方法(使用apache用户替换www数据):

如果它支持chmod+a:

$ rm -rf app/cache/*
$ rm -rf app/logs/*

$ sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
否则,如果它支持setfacl(请参阅):

否则,将这些行放在app/console、web/app.php和web/app_dev.php的开头(不推荐):


您需要获得对缓存和日志文件夹的访问权限。为此,您可以按照此处给出的指示进行操作:

Symfony3文件夹中,缓存从
app
移动到
var
,因此命令将为:

$ rm -rf var/cache/*
$ rm -rf var/logs/*
$ sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs

只需删除dev_old文件夹,然后再次运行该命令。“我可以通过删除'dev_old'文件夹来解决问题,但我想解决导致问题的问题。”并使用
root运行该命令?(或
sudo
)谢谢您的帮助。在删除app/cache/dev_旧文件夹后,我使用了第二组命令(setfacl),该命令已起作用。@hugo briand,请展开为什么不推荐umask(0002)?安全问题?根据symfony安装中给出的指示,此方法不是线程安全的。这意味着,如果您具有对脚本的并行访问权限(例如通过fpm或queries+CLI),则可能会遇到问题。从PHP umask doc():避免在多线程Web服务器中使用此函数。最好在创建文件后使用chmod()更改文件权限。使用umask()可能会导致并发运行脚本和Web服务器本身的意外行为,因为它们都使用相同的umask。非常感谢您,您刚刚用解决方案2让我度过了美好的一天!在哪里给出?:)在你发布链接之前:最好发布链接,并在答案中包含相关内容,因为链接可能会失效。我早在2年前就停止使用Symfony了,千万不要错过它。它使容易的事情变得困难,使困难的事情变得容易。每个项目都让人头疼。Symfony3是什么样子的?
umask(0002); // This will let the permissions be 0775

// or

umask(0000); // This will let the permissions be 0777
$ rm -rf var/cache/*
$ rm -rf var/logs/*
$ sudo chmod +a "www-data allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" var/cache var/logs