使用PHP7的fastcgi_pass的权限被拒绝


19

我正在用PHP7.0运行LEMP。

我已经在我的服务器块中

fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

但是,当我打开站点时,它将返回502 Bad Gateway。下面是错误日志。

*1 connect() to unix:/var/run/php/php7.0-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: example.com, request: "GET / HTTP1.1", upstream: "fsatcgi://unix:/var/run/php/php7.0-fpm.sock:", host: "example.com"

它说“ 权限被拒绝”。怎么了 我已经检查过了,但似乎找不到需要什么样的许可。

谢谢。

Answers:


27

我知道了

php用户为,www-data但nginx用户为nginx

在此处检查php:/etc/php/7.0/fpm/pool.d/www.conf

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

Nginx用户位于 /etc/nginx/nginx.conf

这指导了我:https : //stackoverflow.com/questions/23443398/nginx-error-connect-to-php5-fpm-sock-failed-13-permission-denied


8
您可以更改nginx以使用www-data用户,或者像我所做的那样,使用sudo usermod -a -G www-data nginx
chech

6

我已采取以下步骤解决了同一问题。

打开您的www.conf文件(示例:sudo nano /etc/php-fpm.d/www.conf)最后,找到设置listen.owner和listen.group的行,并将其值从“ nobody”更改为“ nginx” “:

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

最后,找到设置用户和组的行,并将其值从“ apache”更改为“ nginx”:

user = nginx
group = nginx

重启php-fpm(重启sudo服务php-fpm)


7
listen.mode = 0666-这是一个巨大的安全漏洞,并将套接字中的所有数据公开给所有用户。
NotoriousPyro

2
vim /etc/php-fpm.d/www.conf
以这种方式改变
; listen.owner =根
; listen.group =根
; listen.owner =没有人
; listen.group =没人

listen.owner = nginx
listen.group = nginx 

服务php-fpm重新启动
服务nginx重启

CentOS版本6.9(最终版)


2
欢迎光临本站!这是一个无法解释的配置片段,我看不到它将如何回答这个问题。
peterh-恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.