symfony2:我仍然无法设置缓存/目录权限(setfacl,umask)

时间:2014-03-27 13:32:52

标签: symfony

我已经开过这条线了:

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

但我的服务器(apache)无法在cache/目录中写入...这是错误:

  

PHP致命错误:未捕获的异常' RuntimeException'与消息   '无法创建缓存目录   (/家/ tirengarfio /工作区/ nataliacanellas /应用程序/高速缓存的/ dev)\ n'在   /home/tirengarfio/workspace/nataliacanellas/app/bootstrap.php.cache:2471\nStack   追踪:\ n#0   /home/tirengarfio/workspace/nataliacanellas/app/bootstrap.php.cache(2432):   的Symfony \组件\ HttpKernel \内核级> buildContainer()\ n#1   /home/tirengarfio/workspace/nataliacanellas/app/bootstrap.php.cache(2212):   的Symfony \组件\ HttpKernel \内核级> initializeContainer()\ N#2   /home/tirengarfio/workspace/nataliacanellas/app/bootstrap.php.cache(2243):   的Symfony \组件\ HttpKernel \内核级>引导()\ N#3   /home/tirengarfio/workspace/nataliacanellas/web/app_dev.php(29):   的Symfony \组件\ HttpKernel \内核级>手柄(对象(Symfony的\元器件\ HttpFoundation \请求))\ N#4   {main} \ n抛出   /home/tirengarfio/workspace/nataliacanellas/app/bootstrap.php.cache on   第2471行

当然,我安装了acl并添加了这个:

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

并重新安装/

我也试过这个:

<?php

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

app/consoleweb/app_dev.phpweb/app.php内,但错误仍然相同。

1 个答案:

答案 0 :(得分:1)

也许我在回答这个问题时已经很晚了,但看到我遇到了同样的问题,这个帖子是谷歌的第一个结果之一,我想我会在这里发布我的解决方案。

<强>背景

我的Apache2安装在www-data组下运行,如输出:

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

作为参考,我将本地/var/www保留在Ubuntu 14.04中,并将组读/写权限设置为$USER:www-data

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

此外,我使用

$USER群组中拥有www-data
    $ usermod -aG www-data $USER

我设置了这些权限,以允许我的帐户写入/var/www访问权限用于本地开发。

<强>解决方案

最重要的是,我试图使用chmodchown而不是应用Symfony书中提供的setfacl逻辑。除了更熟悉ch*权限命令系列之外,我没有特别的理由。

使用我的方法的解决方案是通过运行以下内容将app/cacheapp/logs目录所有权设置为www-data:www-data

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

这可确保Apache2和PHP具有对这些目录的写访问权。检查我的umask

    $ cd app/cache
    $ umask
    0002

这表示在没有ACL的情况下设置权限时,在Symfony一书中建议的权限位0775和一个umask值。

granting write permissions to www-data上的相关主题可能有助于进一步阐明。