我设置了一个类似于教程在这里。
我在 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”。套接字仍归我所有。不确定为什么这不会导致错误。