温馨提示×

ubuntu php-fpm为何报502错误

小樊
55
2026-09-01 11:33:45
栏目: 编程语言

在 Ubuntu 上 PHP-FPM 报 502 Bad Gateway,通常是 Nginx / Apache 无法正确连接到 PHP-FPM 导致的。下面按「最常见原因 → 排查方法」给你一个系统性的说明。


一、最常见原因(90% 情况)

1️⃣ PHP-FPM 服务没运行

systemctl status php-fpm
# 或(Ubuntu 常见)
systemctl status php8.1-fpm

✅ 解决:

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

2️⃣ Nginx 配置的 PHP-FPM socket 不对

Nginx 中常见两种连接方式:

✅ Unix Socket(推荐)

fastcgi_pass unix:/run/php/php8.1-fpm.sock;

确认文件存在:

ls -l /run/php/php8.1-fpm.sock

不存在说明 PHP-FPM 没起来或 pool 配置错误。


✅ TCP 方式

fastcgi_pass 127.0.0.1:9000;

确认端口监听:

netstat -lntp | grep 9000

3️⃣ PHP-FPM sock 权限错误(非常常见)

Nginx 用户(通常是 www-data)无法访问 sock 文件。

查看:

ps aux | grep nginx
ps aux | grep php-fpm

PHP-FPM pool 配置:

/etc/php/8.1/fpm/pool.d/www.conf

确保:

user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

修改后:

sudo systemctl restart php8.1-fpm

4️⃣ PHP 脚本执行超时 / 崩溃

PHP 报错或被 kill 也会 502。

查看日志:

tail -f /var/log/php8.1-fpm.log
tail -f /var/log/nginx/error.log

常见原因:

  • 内存溢出
  • 死循环
  • 第三方扩展崩溃

二、Nginx 配置问题

5️⃣ fastcgi 配置缺失

Nginx 必须包含:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

6️⃣ Nginx 没重启

sudo nginx -t
sudo systemctl restart nginx

三、快速排查 checklist ✅

# 1. PHP-FPM 是否运行
systemctl status php8.1-fpm

# 2. sock 是否存在
ls /run/php/

# 3. Nginx 错误日志
tail -n 50 /var/log/nginx/error.log

# 4. PHP-FPM 日志
tail -n 50 /var/log/php8.1-fpm.log

# 5. Nginx 配置测试
nginx -t

四、典型错误日志解释

❌ connect() to unix:/run/php/php8.1-fpm.sock failed

→ sock 不存在 / 权限不对

❌ upstream prematurely closed connection

→ PHP 崩溃或超时

❌ permission denied

→ 用户 / 权限问题


如果你愿意,可以把 Nginx 配置 + PHP-FPM 日志贴出来,我可以直接帮你定位是哪一条原因。

0 踩