nginx 无法连接到 php-fpm 套接字

nginx 无法连接到 php-fpm 套接字

我设置了一个类似于教程在这里

我在 nginx 连接到 php5-fpm 套接字时遇到问题,但据我所知,套接字上的权限是正确的......您能帮我一下吗?

2011/04/14 15:31:24 [crit] 13147#0:*1 connect() 到 unix:/var/run/php5-fpm.socket 失败(2:没有此文件或目录)连接到上游时,客户端:74.129.***.***,服务器:app.mydomain.com,请求:“GET /phpinfo.php HTTP/1.1”,上游:“fastcgi://unix:/var/run/php5-fpm.socket:”,主机:“app.mydomain.com”

root@app0:/# ls -l /var/run/php5-fpm.socket
srw-rw-rw- 1 www-data www-data 0 4月 14 15:51 /var/run/php5-fpm.socket

root@app0:/# ps aux | grep fpm
root 13315 0.0 1.9 168276 4948 ? Ss 15:51 0:00 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf
www-data 13316 0.0 2.1 168672 5492?S 15:51 0:00 /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/main.conf

root@app0:/# ps aux | grep nginx
root 13341 0.0 0.4 33200 1036 ? Ss 15:52 0:00 nginx: 主进程 /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf
www-data 13342 0.0 0.7 34008 1880 ? S 15:52 0:00 nginx:工作进程
www-data 13344 0.0 0.6 33680 1628 ? S 15:52 0:00 nginx: 工作进程

我对您提供的配置进行了一些自定义,但大体上是一样的。想建议一种故障排除方法吗?

答案1

这是许多教程忽略的一个问题。php 用户应该是套接字的所有者。因此,您需要确保

chown www-data:www-data /var/run/php5-fpm.socket

答案2

我不知道究竟是什么原因导致了这个问题,可能是 PHP 代码发生了一些变化,但我找到了一种修复此问题的方法:

1)以 root 身份打开您的池配置,我的位于:/etc/php5/fpm/pool.d/www.conf

2)添加以下几行:

  • listen.owner = www-data
  • listen.group = www-data

这是完整的文档对于所有配置参数。

3)重新启动PHP FPM:sudo service php5-fpm restart

它应该使用适当的用户和组重新创建套接字文件:

ls -lah /var/run/|grep php -rw-r--r-- 1 root root 4 Jun 24 18:19 php5-fpm.pid srw-rw---- 1 www-data www-data 0 Jun 24 18:19 php5-fpm.sock

希望对您有帮助!干杯!

答案3

我遇到了类似的问题。在我的开发笔记本电脑 (MacOS) 上,我想在自己的帐户中运行所有内容,以保持一切简单。套接字 i-node 由我自己的帐户拥有。

我只需要在 www.conf 中注释掉 listen.owner 和 listen.group。

我使用“brew services start--all”在自己的帐户中启动一切服务。

在 www.conf 中,“用户”仍设置为“_www”。套接字仍归我所有。不确定为什么这不会导致错误。

相关内容