即使具有正确的权限,Symfony 也无法写入 CentOS 7 上的缓存文件夹

Symfony can't write in cache folder on CentOS 7 even with the right permissions

Symfony 无法写入缓存文件夹,即使我授予该文件夹的完全权限

chmod 777 -R /path/to/symfony/var

但我总是收到这些错误

Cache directory "/path/to/symfony/var/cache/dev" is not writable.

我在 Centos 7 上,我使用 nginx 和 php7

我在 Ubuntu 或 Windows 上从未遇到过这个问题。就在我将我的应用程序移动到 CentOS 的时候

有人建议我 运行 var 文件夹中的那些命令

chcon -R -t httpd_sys_content_rw_t /path/to/symfony/var
systemctl restart nginx

这个解决方案曾经奏效。但过了一会儿我遇到了同样的问题。 我尝试重新运行这些命令,但没有任何改变。

有什么想法吗?

我已经解决了这个问题。 方法如下。

首先,Nginx 和 php-fpm 运行ning 使用 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 user/group(用户 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