这个问题已被多次询问,但没有一个解决方案可以解决我的问题。
我在Mac OSX Lion上运行Apache。此http://localhost/Symfony/web/config.php
网址会触发两个主要问题:
Change the permissions of the "app/cache/" directory so that the web server can write into it.
Change the permissions of the "app/logs/" directory so that the web server can write into it.
在“设置权限”下的guide之后:
rm -rf app/cache/*
rm -rf app/logs/*
sudo chmod +a "_www allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
这不能解决问题,所以我尝试了:
sudo chmod -R 777 app/cache
这也不起作用。任何想法如何解决这个问题?
答案 0 :(得分:50)
一些初步解释:
app/cache
目录。app/logs
目录来实现此目的。关于Apache的一些话:
user
和特定的group
下运行(通常为www-data
,但您必须检查安装以查找已使用的安装。例如,如果您搜索在Linux的/etc/apache2/envvars
中,您将有两个变量APACHE_RUN_USER=www-data
和APACHE_RUN_GROUP=www-data
)。user
和group
进行分析您的问题:
首先,您遇到以下错误:
Change the permissions of the "app/cache/" directory so that the web server can write into it.
Change the permissions of the "app/logs/" directory so that the web server can write into it.
因为您的app/cache
和app/logs
文件夹不能为您的user
和group
写入。
其次,执行:
sudo chmod +a "_www allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
您正在修改app/cache
和app/logs
文件夹的访问控制列表(ACL),以便向whoami
授予一些权限(基本上是您)并_www
。
这种方法不起作用,可以有两个起源:
您正在修改ACL,但您的内核和文件系统是否已配置为考虑ACL?
您正在向whoami
和_www
授予一些权限,但是您是否检查过您的Apache实例是否在其中一个用户下运行?
第三,您的同事通过执行以下方式解决问题:
sudo chmod -R 777 app/cache
这种方法有效,原因有两个:
777
)提供所有权限(读取和写入),因此您确信至少您的Apache用户和组还具有在{{1}中写入所需的权限}。app/cache
)执行此操作,因此在-R
目录中创建的所有嵌套文件夹也会受到新权限的关注。简单的解决方案:
删除app/cache
和app/cache
文件夹的内容:
app/logs
向rm -rf app/cache/*
rm -rf app/logs/*
和app/cache
个文件夹授予所有权限(读取和写入):
app/logs
说明:
答案 1 :(得分:9)
“设置权限”下的guide表示如果您的系统不支持chmod + a,则必须执行此操作:
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
如果不起作用,请尝试:
umask(0002); // This will let the permissions be 0775
// or
umask(0000); // This will let the permissions be 0777
第一个解决方案适合我。我希望它可以帮助那些有同样问题的人。
答案 2 :(得分:1)
rm -rf app/cache/*
rm -rf app/logs/*
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
Source:
http://symfony.com/doc/current/book/installation.html#configuration-and-setup
答案 3 :(得分:0)
但是,在我的情况下(Centos 7和Symfony 4.3),即使在设置权限后,我仍然会收到错误。事实证明 SELinux 阻止了Apache。 以下对我有用(将my-project更改为您的Symfony安装文件夹)。
sudo chcon -R -t httpd_sys_script_rw_t /var/www/my-project/var/cache/
sudo chcon -R -t httpd_sys_script_rw_t /var/www/my-project/var/log/
您也可以在当前会话中暂时禁用SELinux,以隔离问题(我不建议在产品中使用此功能)
sudo setenforce 0