温馨提示×

如何修复Ubuntu PHP-FPM

小樊
33
2026-07-13 20:40:29
栏目: 编程语言

在 Ubuntu 上修复 PHP-FPM 的问题,通常取决于具体表现(无法启动、502 错误、502 Bad Gateway、进程异常等)。下面按常见故障场景给你一套完整排查与修复流程,你可以按顺序来。


一、先确认 PHP-FPM 是否能启动

1️⃣ 查看 PHP-FPM 状态

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

✅ 正常应显示:

Active: active (running)

❌ 如果失败,重点看 红色报错信息


二、常见错误 & 修复方法


✅ 1. PHP-FPM 无法启动(端口 / sock 冲突)

错误示例

ERROR: unable to bind listening socket

原因

  • sock 文件已存在
  • 端口被占用
  • 上次异常退出

修复

# 删除残留 sock
rm -f /run/php/php8.1-fpm.sock

# 重启
systemctl restart php8.1-fpm

✅ 2. Nginx 报 502 Bad Gateway(最常见)

原因

Nginx 找不到 PHP-FPM

检查 Nginx 配置

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

确认 sock 是否存在

ls -l /run/php/

修复权限

chown www-data:www-data /run/php/php8.1-fpm.sock

✅ 3. PHP-FPM 进程数耗尽

错误日志

server reached pm.max_children

修复

编辑配置:

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

调整:

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

然后:

systemctl restart php8.1-fpm

✅ 4. PHP-FPM 监听方式错误

sock vs 端口

listen = /run/php/php8.1-fpm.sock
; 或
listen = 127.0.0.1:9000

⚠️ Nginx 和 PHP-FPM 必须一致


✅ 5. PHP-FPM 被 OOM 杀掉

查看系统日志

journalctl -xe

解决

  • 增加内存
  • 减少 pm.max_children
  • 禁止 swap(不推荐)

✅ 6. PHP 模块缺失导致启动失败

查看错误

php-fpm8.1 -t

修复

apt install php8.1-mysql php8.1-curl php8.1-mbstring

三、强制重装 PHP-FPM(终极方案)

apt purge php8.1-fpm
apt autoremove
apt install php8.1-fpm

四、关键日志位置(非常重要)

PHP-FPM 日志

/var/log/php8.1-fpm.log

Nginx 错误日志

/var/log/nginx/error.log

查看实时日志

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

五、快速自检清单 ✅

  • [ ] systemctl status php8.1-fpm
  • [ ] sock 文件存在
  • [ ] nginx 配置一致
  • [ ] 无 OOM
  • [ ] 进程数合理
  • [ ] 日志无致命错误

六、如果你愿意,我可以进一步帮你

你可以直接把下面信息发我,我可以精准定位问题

  1. Ubuntu 版本
  2. PHP 版本
  3. 报错截图或日志
  4. Nginx / Apache
  5. 访问页面报什么错(502?空白?)

我可以一步一步带你修 ✅

0