Symfony 2缓存清除问题

问题描述:

当我尝试清除缓存时,我的Symfony 2网站最近给我带来了问题。 我在终端上键入以下命令: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,并重新运行清除缓存指令,这给了我这个错误:

[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”文件夹中的问题,但我想,以解决造成问题的问题。

P.S - 我知道该网站正在开发模式下运行。该网站已经生活了10个月,这从来都不是一个问题。

任何帮助表示赞赏!

+0

直接删除dev_old文件夹,然后运行该命令再次。 – Squazic 2013-04-04 15:23:49

+0

“我可以通过删除'dev_old'文件夹来解决问题,但我想解决导致问题的问题。” – qooplmao 2013-04-04 15:25:10

+0

并用'root'运行命令? (或'sudo') – cheesemacfly 2013-04-04 15:36:44

您需要获得对缓存&日志文件夹的访问权限。要做到这一点,你可以按照这里给出的指示:http://symfony.com/doc/current/book/installation.html#configuration-and-setup

有几种方法,根据您的操作系统(与你的apache用户更换WWW的数据):

如果它支持使用chmod +一个:

$ 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的(见https://help.ubuntu.com/community/FilePermissionsACLs):

$ 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 

否则,把这些线在app /控制台的开始,网络/ app.php &网/ app_dev.php(不推荐):

umask(0002); // This will let the permissions be 0775 

// or 

umask(0000); // This will let the permissions be 0777 
+1

谢谢你。删除app/cache/dev_old文件夹后,我使用了第二组命令(setfacl),它已经工作。 – richelliot 2013-04-09 11:20:35

+0

@ hugo-briand,请扩展为什么不推荐umask(0002)?安全问题? – 2014-10-29 11:37:05

+0

从symfony安装中给出的指示来看,这种方法不是线程安全的。这意味着如果您可以并行访问脚本(例如通过fpm或查询+ CLI),则可能会遇到问题。从PHP umask doc(http://php.net/manual/en/function.umask.php):避免在多线程的Web服务器中使用这个函数。创建文件后,最好使用chmod()更改文件权限。使用umask()会导致意外的并发运行脚本和Web服务器本身的行为,因为它们都使用相同的umask。 – 2014-10-30 09:38:10

您需要获得两个缓存&日志文件夹的访问权限。要做到这一点,你可以按照这里给出的指示:

+1

鉴于在哪里?:)在发布该链接之前:最好发布链接*和*在答案本身中包含相关内容,因为链接可能会失效。 – 2016-05-15 22:47:32

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 
+0

我在几年前停止使用Symfony 2,不要错过它一点。它使得简单的事情变得困难并且简单的事情变得容易每个项目都很头痛。 Symfony3是什么样的? – richelliot 2017-06-29 13:06:44