Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Failed to write cache file "/var/www/myapp/app/cache/dev/classes.php" when clearing the cache

Tags:

php

symfony

I have installed Symfony 2.0.7 on Ubuntu 11.10. I have this problem:

I changed the permissions of the cache e logs directories using the following commands:

chmod 777 -R cache
chmod 777 -R logs

and all functions as I was expecting.

Then I made:

app/console cache:clear

Clearing the cache for the dev environment with debug true

permissions of cache/dev change to 755 and symfony cannot write in that:

RuntimeException: Failed to write cache file "/var/www/myapp/app/cache/dev/classes.php".

in /var/www/myapp/app/bootstrap.php.cache line 1079 at ClassCollectionLoader::writeCacheFile() in /var/www/myapp/app/bootstrap.php.cache line 1017 at ClassCollectionLoader::load() in /var/www/myapp/app/bootstrap.php.cache line 682 at Kernel->loadClassCache() in /var/www/myapp/web/app_dev.php line 23

How can I solve this apparent bug in Symfony 2?

like image 915
Omega Avatar asked Dec 09 '11 17:12

Omega


2 Answers

See the Setting up Permissions sidenote in the Configuration and Setup section. Use the ACL approach with setfacl.

e.g.

sudo setfacl -R -m u:apache:rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:apache:rwX -m u:`whoami`:rwX app/cache app/logs

(where apache is your HTTPD user)

like image 136
Elnur Abdurrakhimov Avatar answered Oct 01 '22 01:10

Elnur Abdurrakhimov


Well, I'm using setfacl to avoid that issues but I still having problems. I'm working on a standard user directory so this do not work for me:

APACHEUSER=`ps aux | grep -E '[a]pache|[h]ttpd' | grep -v root | head -1 | cut -d\  -f1`
sudo setfacl -R -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs

If you too, do this: (as privileged user if necessary of course )

sudo rm -rf app/cache app/logs

Then as NORMAL user create both directories and then apply the commands below as NORMAL user too (without sudo):

exit (from root if necessary)
mkdir app/cache app/logs

APACHEUSER=`ps aux | grep -E '[a]pache|[h]ttpd' | grep -v root | head -1 | cut -d\  -f1`
setfacl -R -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs
setfacl -dR -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs

Note: remember that there are two spaces between -d\ and -f1

Good luck!

like image 27
Karmavil Avatar answered Oct 01 '22 02:10

Karmavil