我已经开过这条线了:
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/console
,web/app_dev.php
和web/app.php
内,但错误仍然相同。
答案 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
访问权限用于本地开发。
<强>解决方案强>
最重要的是,我试图使用chmod
和chown
而不是应用Symfony书中提供的setfacl
逻辑。除了更熟悉ch*
权限命令系列之外,我没有特别的理由。
使用我的方法的解决方案是通过运行以下内容将app/cache
和app/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上的相关主题可能有助于进一步阐明。