使用 PHP7 的 fastcgi_pass 权限被拒绝

使用 PHP7 的 fastcgi_pass 权限被拒绝

我正在使用 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"

它说没有权限。这里出了什么问题?我已经检查过了,但似乎找不到需要授予什么类型的权限。

谢谢。

答案1

我让它工作了。

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

答案2

我已通过以下步骤解决了同一问题。

打开你的閣下網站文件(例如: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 service php-fpm restart)

答案3

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

listen.owner = nginx
listen.group = nginx

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

CentOS 版本 6.9(最终版)

答案4

确保运行 nginx 进程的用户有访问 php-fpm 套接字的权限。

这就是我在 AWS 上的配置。

我猜想以您的用户身份运行 php-process 和 nginx-pool,而不是以 root 用户身份运行。

php-socket-own

nginx-config-用户运行池

相关内容