Velvet Star Monitor

Standout celebrity highlights with iconic style.

general

symfony2: I still can not set cache/ directory permissions (setfacl, umask)

Writer Sebastian Wright

I have run this lines:

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
sudo setfacl -Rn -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dRn -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs

but my server (apache) can not write in the cache/ directory... This is the error:

PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Unable to create the cache directory (/home/tirengarfio/workspace/nataliacanellas/app/cache/dev)\n' in /home/tirengarfio/workspace/nataliacanellas/app/bootstrap.php.cache:2471\nStack trace:\n#0 /home/tirengarfio/workspace/nataliacanellas/app/bootstrap.php.cache(2432): Symfony\Component\HttpKernel\Kernel->buildContainer()\n#1 /home/tirengarfio/workspace/nataliacanellas/app/bootstrap.php.cache(2212): Symfony\Component\HttpKernel\Kernel->initializeContainer()\n#2 /home/tirengarfio/workspace/nataliacanellas/app/bootstrap.php.cache(2243): Symfony\Component\HttpKernel\Kernel->boot()\n#3 /home/tirengarfio/workspace/nataliacanellas/web/app_dev.php(29): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request))\n#4 {main}\n thrown in /home/tirengarfio/workspace/nataliacanellas/app/bootstrap.php.cache on line 2471

Of course, I installed acl and added this:

`UUID=857ea3b1-a007-483c-83be-71f77c6455b7 / ext4 errors=remount-ro,acl 0 1
`

and remount /.

I have also tried this:

<?php
umask(0000); // This will let the permissions be 0777

inside app/console, web/app_dev.php and web/app.php, but the error is still the same.

6

1 Answer

Perhaps I am quite late in answering this, but seeing as I had the same issues and this thread was one of the first results in Google, I thought I would post my solution here.

Background

My Apache2 install runs under the www-data group, as evidenced by the output of:

 $ ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1 www-data

For reference, I keep my local /var/www in Ubuntu 14.04 with group read/write permissions and ownership set to $USER:www-data:

 $ sudo chown -R $USER:www-data /var/www $ sudo chmod -R g+rw /var/www

Additionally, I have my $USER in the www-data group using

 $ usermod -aG www-data $USER

I set these permissions in order to allow my account write access to /var/www for local development purposes.

Solution

Foremost, I sought to use chmod and chown instead of applying the setfacl logic presented in the Symfony book. I have no especial reasoning for this besides being more familiar with the ch* family of permission commands.

The solution using my approach was simply setting the app/cache and app/logs directory ownership to www-data:www-data by running:

 $ sudo chown -R www-data:www-data app/cache $ sudo chown -R www-data:www-data app/logs

This ensures Apache2 and PHP have write access to those directories. Checking my umask:

 $ cd app/cache $ umask 0002

This indicates permission bits 0775 and is one umask value suggested in the Symfony book when setting permissions without ACL.

A related thread on granting write permissions to www-data may help elucidate further.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.