在 Ubuntu 上排查 PHP-FPM 问题,通常可以按下面一套“由外到内”的流程来做。下面按常见场景 + 排查命令整理,实用为主。
systemctl status php-fpm
# 或(Ubuntu 常见)
systemctl status php8.1-fpm
✅ 正常应是 active (running)
❌ 如果失败,看错误信息
启动 / 重启:
sudo systemctl start php8.1-fpm
sudo systemctl restart php8.1-fpm
通常在:
/var/log/php8.1-fpm.log
或
/var/log/php-fpm.log
查看:
tail -n 100 /var/log/php8.1-fpm.log
常见错误:
pool www 配置错误permission deniedunable to bind addresslocation ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
检查 socket 是否存在:
ls -l /run/php/php8.1-fpm.sock
❌ 不存在 → PHP-FPM 没启动或配置错
/etc/php/8.1/fpm/php-fpm.conf
/etc/php/8.1/fpm/pool.d/www.conf
重点看:
listen = /run/php/php8.1-fpm.sock
user = www-data
group = www-data
测试配置是否正确:
php-fpm8.1 -t
Nginx 用户通常是 www-data
ps aux | grep nginx
ps aux | grep php-fpm
确保:
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
sudo chown -R www-data:www-data /var/www/html
/etc/php/8.1/fpm/php.ini
display_errors = On
error_reporting = E_ALL
重启:
sudo systemctl restart php8.1-fpm
查看 PHP 错误日志:
/var/log/php8.1-fpm.log
快速验证:
sudo -u www-data php /var/www/html/index.php
查看进程数:
ps aux | grep php-fpm
www.conf 中关注:
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
systemctl status php8.1-fpm
php-fpm8.1 -t
tail -n 50 /var/log/php8.1-fpm.log
ls -l /run/php/php8.1-fpm.sock
nginx -t
如果你愿意,可以告诉我:
我可以帮你精准定位。