nginx 和 php-fpm 套接字所有者
更新我的系统后,我遇到了在Nginx上运行的PHP应用程序的错误网关错误。
1 连接到 unix:/var/run/php-fcgi-vhostname-php-fcgi-0.sock 失败 (13: 权限被拒绝) 在连接到上游时, 客户端: xx.xxx.xx.xx, 服务器: localhost, 请求: “GET / HTTP/1.1”, 上游: “fastcgi://unix:/var/run/php-fcgi-vhostname-php-fcgi-0.sock:”, 主机: “xx.xx.xx.xx”
这个问题是由使用的php-fpm套接字的权限错误引起的,实际上我看到由nginx和php-fpm拥有作为用户使用。/var/run/php-fcgi.sock
root:root
www-data
我已经编辑了php-fpm配置:/etc/php-fpm.d/www.conf
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
但它不能解决问题,当我重新启动nginx和php-fpm时,套接字是作为用户/组创建的。root:root
我发现修复它的唯一方法是手动将套接字的所有者更改为www-data:www-data。但这不是一个真正的解决方案,因为每次我重新启动我的服务时,我都必须再次应用它。
如何解决此问题?我使用的是 CentOS 6.5
编辑:
我使用Ajenti-V来配置我的虚拟主机和PHP-FPM。它为每个网站/ vhost创建一个新的套接字,并且它们设置在/etc/php-fpm.conf
它们具有以下结构:
[vhostname-php-fcgi-0]
user = www-data
group = www-data
listen = /var/run/php-fcgi-vhostname-php-fcgi-0.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5
如果我将以下字符串添加到每个条目中:
listen.owner = www-data
listen.group = www-data
listen.mode = 0666
一切正常。
所以看起来www.conf不包括在内(也许?)。这是我的php-fpm.conf:
[global]
pid = /var/run/php-fpm/php-fpm.pid
error_log = /var/log/php5-fpm.log
[global-pool]
user = www-data
group = www-data
listen = /var/run/php-fcgi.sock
pm = dynamic
pm.start_servers = 1
pm.max_children = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 5
[vhostname-php-fcgi-0]
user = www-data
group = www-data
listen = /var/run/php-fcgi-vhostname-php-fcgi-0.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 5