即使我授予该文件夹的完全权限,Symfony也无法在缓存文件夹中写入
chmod 777 -R /path/to/symfony/var
但我总是收到这些错误
缓存目录"/path/to/symfony/var/cache/dev"不可写。
我在 Centos 7 上,我使用 nginx 和 php7
我在 Ubuntu 或 Windows 上从未遇到过这个问题。只是当我将我的应用程序移动到 CentOS 时
有人建议我在var文件夹上运行这些命令
chcon -R -t httpd_sys_content_rw_t /path/to/symfony/var
systemctl restart nginx
这个解决方案曾经奏效过。但过了一会儿,我遇到了同样的问题。 我尝试重新运行 tose 命令,但没有任何变化。
有什么想法吗?
我已经解决了这个问题。 方法如下。
首先,Nginx和php-fpm使用nginx用户运行。此用户是在安装 Nginx 时自动创建的。
在/etc/nginx/nginx.conf
user nginx;
在/etc/php-fpm.d/www.conf
user = nginx
group = nginx
...
...
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
其次,symfony应用程序的权限设置为755,所有者更改为nginx用户/组(用户Nginx和php-fpm正在使用(
sudo chown -R nginx:nginx /path/to/symfony
sudo chmod 0755 -R /path/to/symfony
然后,我运行两个命令。首先是实现httpd连接 第二个允许httpd进程在/path/to/symfony文件夹上读写
sudo setsebool -P httpd_can_network_connect on
sudo chcon -R -t httpd_sys_content_rw_t /path/to/symfony
实际上,重新启动 Nginx 服务
sudo systemctl restart nginx