web-dev-qa-db-pt.com

Problema de limpeza do cache do Symfony 2

Meu website do Symfony 2 tem me dado problemas recentemente quando tento limpar o cache. Eu digite o seguinte comando no terminal:

php app/console cache:clear --env=dev

E obtenha o seguinte erro:

[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  

Por isso, altero as permissões desse arquivo para 777 e executo novamente o comando clear cache, o que me dá este erro:

  [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  

Eu posso contornar o problema, excluindo a pasta 'dev_old', mas quero resolver o problema que está causando o problema.

P.S - Estou ciente de que o site está sendo executado no modo dev. O site está ativo há 10 meses e isso nunca foi um problema antes.

Qualquer ajuda é apreciada!

12
richelliot

Você precisa obter seus direitos de acesso nas pastas cache e logs. Para fazer isso, você pode seguir as indicações dadas aqui: http://symfony.com/doc/current/book/installation.html#configuration-and-setup

Existem várias maneiras, dependendo do seu sistema operacional (substitua www-data pelo usuário do Apache):

Se ele suporta 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

Senão, se ele suporta setfacl (veja 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

Senão, coloque essas linhas no começo do app/console, web/app.php & web/app_dev.php (não recomendado):

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

// or

umask(0000); // This will let the permissions be 0777
32
Hugo Briand

em Symfony3 pastas com cache movidas de app para var, então o comando será:

$ 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
2
Stan Fad