温馨提示×

ubuntu php-fpm为什么报错

小樊
45
2026-09-16 13:43:05
栏目: 编程语言

在 Ubuntu 上 php-fpm 报错 的原因有很多种,不能一概而论,需要先看具体报错信息。不过我可以按常见场景给你一个排查清单,你对照一下基本就能定位。


一、最常见的 php-fpm 报错原因

1️⃣ php-fpm 服务没启动 / 启动失败

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

常见错误:

  • Failed to start The PHP FastCGI Process Manager
  • Address already in use

✅ 解决:

journalctl -xeu php8.1-fpm

看具体错误


2️⃣ 端口 / socket 配置错误(Nginx / Apache 连不上)

php-fpm 有两种方式:

TCP 方式

listen = 127.0.0.1:9000

Unix socket(Ubuntu 默认)

listen = /run/php/php8.1-fpm.sock

如果你用 Nginx:

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

❌ 常见错误:

  • connect() to unix:/run/php/php8.1-fpm.sock failed (No such file or directory)
  • Permission denied

✅ 解决:

ls -l /run/php/

确保 socket 存在,并且 Nginx 用户(www-data)有权限


3️⃣ PHP 版本不对(多个 PHP 共存)

Ubuntu 常装多个 PHP:

ls /etc/php/

你可能:

  • Nginx 指向 php7.4
  • 实际启动的是 php8.1-fpm

✅ 解决:

systemctl restart php8.1-fpm

4️⃣ php-fpm 配置语法错误

php-fpm8.1 -t

常见错误:

  • unknown directive
  • missing semicolon

5️⃣ 用户 / 权限问题

php-fpm 默认用户:

user = www-data
group = www-data

如果网站目录权限不对:

chown -R www-data:www-data /var/www/html

6️⃣ 内存 / 进程数耗尽

错误日志中常见:

  • pool www exhausted
  • cannot fork

✅ 修改:

pm.max_children = 50
pm.start_servers = 10

二、你可以这样快速定位问题

请把下面任意一个信息贴出来,我可以直接告诉你原因:

  1. 完整报错信息(终端 / 日志)
  2. 使用的 PHP 版本:
    php -v
    
  3. Web 服务:
    • Nginx?
    • Apache?
  4. 报错发生的场景:
    • 启动 php-fpm?
    • 访问网页 502?
    • 执行命令行?

三、最快排查命令合集

systemctl status php8.1-fpm
journalctl -xeu php8.1-fpm
php-fpm8.1 -t
tail -n 50 /var/log/php8.1-fpm.log

如果你愿意,把报错原文直接贴出来,我可以一步到位告诉你怎么修 ✅

0