You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Nginx与PHP-FPM连接配置及重装PHP后502错误排查求助

Nginx与PHP-FPM连接配置及重装PHP后502错误排查求助

嘿,我来帮你一步步排查这个重装PHP后出现的502错误问题!502 Bad Gateway本质上是Nginx没法和后端的PHP-FPM服务建立有效连接,咱们从基础到细节逐一排查:

  • 第一步:先确认PHP-FPM服务是否正常运行
    先看看PHP-FPM有没有在跑,执行命令:

    systemctl status php7.4-fpm
    

    如果显示不是active (running)状态,先启动它:

    systemctl start php7.4-fpm
    

    顺便设置开机自启避免下次重启出问题:

    systemctl enable php7.4-fpm
    
  • 第二步:核对PHP-FPM的监听配置
    PHP-FPM一般用Unix Socket或者TCP端口两种方式监听,咱们先找到它的配置:
    打开PHP-FPM的池配置文件:

    nano /etc/php/7.4/fpm/pool.d/www.conf
    

    找到listen这一行,比如可能是:

    listen = /run/php/php7.4-fpm.sock
    

    或者TCP端口形式:

    listen = 127.0.0.1:9000
    

    把这个监听地址记下来,后面要和Nginx配置对应上。

  • 第三步:检查Nginx项目配置里的PHP处理规则
    你的所有项目配置都在/etc/nginx/conf.d/下,打开任意一个项目的配置文件,找到处理.php请求的location块,比如类似这样的结构:

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 重点看这一行!
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    

    这里的fastcgi_pass必须和你刚才找到的PHP-FPMlisten配置完全一致:如果PHP-FPM用的是Socket,就写Socket路径;如果是TCP端口,就写127.0.0.1:9000(或者对应端口)。要是这里不匹配,肯定会出现502错误。

  • 第四步:排查Socket权限问题(如果用Socket的话)
    要是PHP-FPM用的是Unix Socket,得确保Nginx进程有访问这个Socket文件的权限。先看Socket的权限:

    ls -l /run/php/php7.4-fpm.sock
    

    正常情况下,所有者和组应该是www-data(Nginx默认运行用户)。如果权限不对,回到PHP-FPM的www.conf配置文件,修改这两行:

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

    然后重启PHP-FPM生效:

    systemctl restart php7.4-fpm
    
  • 第五步:查看错误日志找具体线索
    要是前面的步骤没解决,直接看日志找问题:

    • Nginx错误日志:tail -f /var/log/nginx/error.log,里面会明确告诉你是连接被拒绝、权限不够还是路径不对;
    • PHP-FPM日志:tail -f /var/log/php7.4-fpm.log,看看有没有启动失败或者池配置错误的信息。
  • 第六步:验证配置并重启服务
    修改完任何配置后,先检查Nginx配置是否合法:

    nginx -t
    

    显示test is successful后,重启Nginx和PHP-FPM:

    systemctl restart nginx
    systemctl restart php7.4-fpm
    

另外,别忘了确认php7.4-fpm包有没有被正确安装——有时候重装php-common可能没自动带上这个包,执行下面的命令确保安装:

apt-get install php7.4-fpm

备注:内容来源于stack exchange,提问作者Martin AJ

火山引擎 最新活动