在 Ubuntu 下 php-fpm 启动失败,常见原因有不少,下面按出现频率给你一个排查清单,基本能覆盖 90% 的情况。
Ubuntu 上可能同时有多个版本:
ls /etc/php/
常见如:
启动命令要对应版本:
sudo systemctl start php8.1-fpm
❌ 错误示例:
systemctl start php-fpm # 不存在
systemctl status php8.1-fpm
重点看:
failedsudo journalctl -xeu php8.1-fpm
或者:
sudo tail -n 50 /var/log/php8.1-fpm.log
日志里通常会直接告诉你错误原因 ✅
sudo php-fpm8.1 -t
❌ 常见错误:
; 少了= 少了修复后重启:
sudo systemctl restart php8.1-fpm
错误示例:
ERROR: unable to bind listening socket
sudo netstat -tlnp | grep 9000
# 或
sudo ss -lntp | grep 9000
/etc/php/8.1/fpm/pool.d/www.conflisten = /run/php/php8.1-fpm.sock
Nginx 访问 php-fpm 时失败。
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
然后:
sudo systemctl restart php8.1-fpm
错误示例:
ERROR: unable to set uid
检查:
id www-data
不存在就创建:
sudo useradd -r www-data
日志中可能出现:
Cannot allocate memory
临时解决:
systemctl status php8.1-fpm
显示 masked:
sudo systemctl unmask php8.1-fpm
sudo systemctl enable php8.1-fpm
# 1. 测试配置
sudo php-fpm8.1 -t
# 2. 查看状态
systemctl status php8.1-fpm
# 3. 查看日志
sudo tail -n 50 /var/log/php8.1-fpm.log
你可以直接把以下信息贴出来,我可以 精确告诉你原因:
systemctl status php8.1-fpm
php-fpm8.1 -t
或者:
我可以一步一步帮你定位 ✅