Symfony不能在CentOS 7上的缓存文件夹中写入,即使有正确的权限



即使我授予该文件夹的完全权限,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

最新更新