温馨提示×

ubuntu php fpm为何启动失败

小樊
46
2026-09-04 12:48:32
栏目: 编程语言

Ubuntu 上 PHP-FPM 启动失败 常见原因有很多,下面按「最常见 → 较少见」给你一个排查清单,基本照着做就能定位问题。


一、先看错误日志(最重要)

sudo systemctl status php-fpm
sudo journalctl -xe

或者(版本不同路径不同):

sudo tail -n 50 /var/log/php*-fpm.log

常见报错示例:

  • Unable to open log file
  • pool www cannot be started
  • address already in use
  • permission denied

二、最常见原因及解决方法

1️⃣ PHP-FPM 服务名写错(非常常见)

Ubuntu 上服务名是带版本的,例如:

php7.4-fpm
php8.1-fpm
php8.2-fpm

✅ 正确:

sudo systemctl start php8.1-fpm

❌ 错误:

systemctl start php-fpm   # Ubuntu 里通常不存在

2️⃣ 端口 / socket 被占用

错误示例:

ERROR: unable to bind listening socket

检查:

sudo netstat -tunlp | grep 9000

解决:

  • 杀掉占用进程
  • 或修改 www.conf
listen = /run/php/php8.1-fpm.sock

3️⃣ 配置语法错误

sudo php-fpm8.1 -t

如果有错误,会直接提示哪一行。


4️⃣ 用户 / 组不存在

错误示例:

pool www: unable to set uid

检查:

id www-data

PHP-FPM 默认用户:

user = www-data
group = www-data

5️⃣ 日志或 run 目录权限问题

sudo mkdir -p /run/php
sudo chown -R www-data:www-data /run/php

6️⃣ 系统重启后 /run 丢失

Ubuntu 重启后 /run 是 tmpfs,可能目录不存在。

解决(systemd 会自动建,但手动装的可能不会):

sudo systemctl restart php8.1-fpm

三、快速自检流程(推荐)

php-fpm8.1 -t
systemctl status php8.1-fpm
journalctl -xe

四、如果你愿意,我可以直接帮你定位

请把下面信息贴出来:

  1. Ubuntu 版本
  2. PHP 版本
  3. systemctl status php*-fpm 输出
  4. 相关错误日志

我可以直接告诉你具体是哪一行配置或权限问题

0