为 Symfony2 设置权限时出错


Errors in setting permissions for Symfony2

我正在尝试在我的Vagrant虚拟机上设置Symfony2。

导航到BASE_RULE/web/app_dev.php时,这是我收到的权限错误:

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

阅读各种StackOverflow线程并尝试许多不同的建议解决方案,人们建议我使用这篇Symfony2权限文章。

我尝试了第 2 号,但由于我的系统不支持chmod +a,我转到了第 3 号:

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 -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs

当我执行setfacl命令时,出现以下错误:

vagrant@order-online:/var/www/app$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX cache logs
setfacl: cache: Operation not supported
setfacl: cache/.DS_Store: Operation not supported
setfacl: cache/dev: Operation not supported
setfacl: cache/dev/annotations: Operation not supported
setfacl: cache/dev/appDevDebugProjectContainer.php: Operation not supported
setfacl: cache/dev/appDevDebugProjectContainer.php.meta: Operation not supported
setfacl: cache/dev/appDevDebugProjectContainer.xml: Operation not supported
setfacl: cache/dev/appDevDebugProjectContainerCompiler.log: Operation not supported

所以这个不起作用(或者我错过了一些东西..),所以我转到了数字 4 ,这是在 app/console, web/app.php and web/app_dev.php 下设置umask(0000);.

在这三个文件位置应用该更改后,我清除了缓存,重新启动了Vagrant和Apache,但仍然收到相同的错误。

谢谢。

它也可能是您的组权限。检查您的网络服务器正在使用哪个用户。如果您使用的是nginx,通常可以在/etc/nginx/pool.d/www.conf中找到它。它通常是像 www-data .所以你会这样做:$ sudo chown -R www-data:www-data /var/www/your-symfony-project

我认为您只需要更改缓存和日志权限即可由www-data和其他组编辑。所以就这样做chmod -R 777 app/cache/* app/logs/*