php-fpm报502问题的解决办法

 更新时间:2021年04月21日 09:16:00   作者:幸福丶如此  
这篇文章主要介绍了php-fpm报502问题的解决办法,遇到此类问题的同学,可以参考下

搭建lnmp完lnmp环境后,测试时出现502报错,看到这个问题,我立刻想到是php-fpm没有起来,但是我用 ps -ef | grep php-fpm 截取 php-fpm 的进程,发现是有的,这时我有查看nginx的错误日志,发现错误信息是:

2017/05/05 17:08:45 [crit] 3258#0: *2 connect() to unix:/tmp/php-cgi.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.88.1, server: 192.168.88.133, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "192.168.88.134"

备注:php我用的版本是7.1.4的,最新的版本,之前用5.6版本的时候没有出现过这个问题

思路:发现php-fpm的listen是unix sock方式运行的,问题可能出在php-fpm上。既然没有这个文件,就先把文件创建出来
1、创建这个文件,并赋予权限,因为我在编译的时候是用www用户,所以将/tmp/php-cgi.sock的属主和属组都授权为www

touch /tmp/php-cgi.sock

chown www.www /tmp/php-cgi.sock

重启ngix和php-fpm发现还是502的问题

2、我在网上也查看了下,说是其中
fastcgi_pass为配置nginx与php-fpm的交互路径,一般有两种方式
sock方式:fastcgi_pass unix:/tmp/php-cgi.sock;
http方式:fastcgi_pass 127.0.0.1:9000;
任选其中一种即可,但必须和php-fpm的配置一致。
后来我就在nginx的配置文件中加上一下代码

location ~\.php$ {  

    root /root/wwwroot;  

    fastcgi_pass unix:/tmp/php-cgi.sock;  

    fastcgi_index index.php;  

    include fastcgi.conf;  

3、同时修改php-fpm的配置文件php-fpm.conf,将listen = 127.0.0.1:9000改为

listen = /tmp/php-cgi.sock
#这个是设置 /tmp/php-cgi.sock 权限用的
listen.owner = www
listen.group = www
listen.mode = 0660

再次重启ngix和php-fpm,问题解决

总结:

1、其实这个问题总体就是nginx与php-fpm的交互问题,看我们选择是sock方式还是http方式,但是不管选择哪一种,我们都需要统一
2、我在网上看到有人说将max_children 进程改大,其实这种情况我之前遇到过,它适用于本来php运行正常,突然出现502的问题,这个问题是php-fpm队列满了,出现连接拒绝的错误。如果有问题,可以参考我的博客:http://blog.csdn.net/m0_37886429/article/details/70048754
3、还有人说将php-fpm配置文件里有backlog,backlog是linux服务器在socket处理连接数的定义,phpfpm默认为-1,将-1改为4096,重启php-fpm问题。
4、其实我们不管选择哪一种,主要是针对自己的问题,先要看报错,然后再对症下药,不要这一种试试那一种试试。

以上就是php-fpm报502问题的解决办法的详细内容,更多关于php-fpm报502问题的资料请关注脚本之家其它相关文章!

相关文章

  • php连接mysql之mysql_connect()与mysqli_connect()的区别

    php连接mysql之mysql_connect()与mysqli_connect()的区别

    本扩展自 PHP 5.5.0 起已废弃,并在将来会被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之,这里就为大家分享一下mysql_connect()与mysqli_connect()的区别,需要的朋友可以参考下
    2020-07-07
  • 使用VisualStudio开发php的图文设置方法

    使用VisualStudio开发php的图文设置方法

    早先在asp横行的年代,php和asp一样,大都都是html中夹杂代码,说实话,这时候IDE的确用处不是很大,倒是类似于dw之类的设计器甚为上手。
    2010-08-08
  • PHP IE中下载附件问题解决方法

    PHP IE中下载附件问题解决方法

    在IE中下载附件之前要清空缓存、中文文件名要用urlencode编码,下面有个不错的示例,需要的朋友可以参考下
    2014-01-01
  • 详解Laravel框架的依赖注入功能

    详解Laravel框架的依赖注入功能

    依赖注入不是让对象创建一个依赖关系,也不是让工厂对象去创建对象,而是将所需的依赖变成一个外部对象,使之成为一个"某些人的问题”,你为"某些人的问题”注入了类的依赖关系。在Laravel中,这个"某人”是服务容器,服务容器负责通过构造函数注入类的依赖关系。
    2021-05-05
  • php mb_substr()函数截取中文字符串应用示例

    php mb_substr()函数截取中文字符串应用示例

    substr()函数用来截取字符串,但是对于中文字符会出现问题,而mb_substr()和mb_strcut这两个函数可以,下面为大家介绍其具体用法
    2014-07-07
  • Apache+PHP+MySQL搭建PHP开发环境图文教程

    Apache+PHP+MySQL搭建PHP开发环境图文教程

    这篇文章主要介绍了Apache+PHP+MySQL搭建PHP开发环境图文教程,文中通过图文流程介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 详解如何在PHP代码里面调用Go程序

    详解如何在PHP代码里面调用Go程序

    PHP和Go都是广泛使用的编程语言,但各自具有其独特的优势和特性,那么如何在PHP代码里面调用Go程序呢,下面小编就来为大家介绍一下常用的两种方法
    2023-11-11
  • 深入理解php中unset()

    深入理解php中unset()

    这篇文章主要介绍了深入理解php中unset(),对unset感兴趣的同学,可以参考下
    2021-04-04
  • PHP数据库表操作的封装类及用法实例详解

    PHP数据库表操作的封装类及用法实例详解

    这篇文章主要介绍了PHP数据库表操作的封装类及用法,结合实例形式详细分析了php数据库表操作的封装类定义与具体使用方法,需要的朋友可以参考下
    2016-07-07
  • PHP Laravel软删除的实现方法介绍

    PHP Laravel软删除的实现方法介绍

    软删除就是逻辑删除,数据保留单标记上删除状态,一般我们会用删除时间来作为标记,这样标记状态有了,删除时间也有了
    2022-09-09

最新评论