我正在使用 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"
它说Permission Denied。这里有什么问题?我已经检查过了,但我似乎找不到需要给予什么样的许可。
谢谢你。
我让它工作了。
php 用户是,
www-data
但 nginx 用户是nginx
.在此处检查 php:/etc/php/7.0/fpm/pool.d/www.conf
Nginx 用户位于
/etc/nginx/nginx.conf
这指导了我:https ://stackoverflow.com/questions/23443398/nginx-error-connect-to-php5-fpm-sock-failed-13-permission-denied
我通过以下步骤解决了同样的问题。
打开您的www.conf文件(例如:sudo nano /etc/php-fpm.d/www.conf)最后,找到设置 listen.owner 和 listen.group 的行并将它们的值从“nobody”更改为“nginx” “:
最后,找到设置用户和组的行,并将它们的值从“apache”更改为“nginx”:
重启php-fpm(sudo service php-fpm restart)
请注意(至少在 centos 8 中)您分配的用户
listen.owner
和其他内容必须与用户 在同一个池中,例如假设我是foo用户我不知道是否有一个全局池,但经过数小时的搜索,我终于做到了。
确保运行 nginx-process 的用户具有访问 php-fpm 套接字的权限。
所以有我在 AWS 上的配置。
我猜想以您的用户身份运行 php-process 和 nginx-pool,而不是以 root 用户身份运行。
php-socket-自己的
nginx-config-user-run-pool