Ubuntu 上 php-fpm 启动失败 的原因有很多种,下面按常见原因 → 排查方法 → 解决办法给你一个系统性的排查思路。
sudo systemctl status php-fpm
sudo journalctl -xe
或者看你 PHP 版本(如 8.1):
sudo systemctl status php8.1-fpm
常见服务名:
php-fpmphp7.4-fpmphp8.1-fpmphp8.2-fpm报错示例:
ERROR: unable to bind listening socket for address '127.0.0.1:9000'
原因:
解决:
sudo lsof -i:9000
sudo kill -9 <pid>
或修改 www.conf:
listen = /run/php/php8.1-fpm.sock
报错示例:
ERROR: failed to load configuration file '/etc/php/8.1/fpm/php-fpm.conf'
检查语法:
sudo php-fpm8.1 -t
或:
sudo php-fpm -t
报错示例:
ERROR: pool 'www' cannot get uid for user 'www-data'
解决:
id www-data
若不存在:
sudo useradd www-data
报错示例:
ERROR: unable to create socket /run/php/php8.1-fpm.sock
解决:
sudo mkdir -p /run/php
sudo chown www-data:www-data /run/php
报错示例:
PHP Fatal error: Unable to load dynamic library
解决:
php -m
注释掉有问题的扩展:
sudo vim /etc/php/8.1/fpm/conf.d/xxx.ini
日志特征:
php-fpm.service: Main process exited, code=killed, status=9
解决:
pm.max_children# 1. 测试配置
sudo php-fpm8.1 -t
# 2. 查看服务
sudo systemctl restart php8.1-fpm
sudo systemctl status php8.1-fpm
# 3. 看日志
sudo tail -n 50 /var/log/php8.1-fpm.log
请把下面信息贴出来:
systemctl status php-fpm 的完整输出/var/log/php*-fpm.log 报错内容我可以直接告诉你是哪一行配置导致启动失败。