在 Ubuntu 上修复 php-fpm 错误 通常需要先定位具体报错原因。下面我按常见场景 + 排查步骤 + 解决方案给你一个系统性的指南。
systemctl status php-fpm
# 或(Ubuntu 常见)
systemctl status php8.1-fpm # 按你的版本
如果服务启动失败,重点看 红色报错信息。
journalctl -xeu php8.1-fpm
tail -n 100 /var/log/php8.1-fpm.log
常见路径:
/var/log/php8.1-fpm.log
/var/log/php-fpm.log
错误示例
ERROR: unable to bind listening socket
原因
解决
ps aux | grep php-fpm
sudo killall php-fpm
sudo systemctl restart php8.1-fpm
或修改监听方式:
listen = /run/php/php8.1-fpm.sock
错误示例
ERROR: failed to load configuration file
检查配置
php-fpm8.1 -t
修复
/etc/php/8.1/fpm/php-fpm.conf/etc/php/8.1/fpm/pool.d/www.conf常见错误:
;错误示例
ERROR: unable to set uid or gid
解决
sudo groupadd www-data
sudo useradd -g www-data www-data
或修改:
user = www-data
group = www-data
错误示例
connect() to unix:/run/php/php8.1-fpm.sock failed (13: Permission denied)
解决
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
然后:
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
错误示例
PHP Startup: Unable to load dynamic library
解决
sudo apt install php8.1-mysql php8.1-curl php8.1-mbstring
错误示例
server reached pm.max_children
解决 编辑:
/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
# 1. 检查配置
php-fpm8.1 -t
# 2. 重启服务
sudo systemctl restart php8.1-fpm
# 3. 查看错误
tail -f /var/log/php8.1-fpm.log
你可以直接把 完整报错信息 发给我,例如:
systemctl status php8.1-fpm
或
journalctl -xeu php8.1-fpm
我可以精准定位并给你最小修改方案 ✅