在 Ubuntu 上排查 PHP‑FPM 问题,通常可以按下面这个“由外到内”的思路来排错。
systemctl status php-fpm
# 或(版本相关)
systemctl status php7.4-fpm
systemctl status php8.1-fpm
看是否:
重启试试:
systemctl restart php8.1-fpm
journalctl -u php8.1-fpm -n 50
通常在:
/var/log/php8.1-fpm.log
# 或
/var/log/php-fpm.log
查看:
tail -f /var/log/php8.1-fpm.log
常见错误:
pool www cannot be startedpermission deniedtoo many open files/etc/php/8.1/fpm/php-fpm.conf
/etc/php/8.1/fpm/pool.d/www.conf
重点看:
listen = /run/php/php8.1-fpm.sock
; 或
listen = 127.0.0.1:9000
user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
常见坑:
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
检查:
ls -l /run/php/
如果 socket 不存在:
测试 Nginx 配置:
nginx -t
systemctl reload nginx
/etc/php/8.1/fpm/php.ini
display_errors = Off # 生产环境
log_errors = On
error_log = /var/log/php_errors.log
php -v
php -m
php /var/www/html/test.php
原因:
排查:
systemctl status php8.1-fpm
ls -l /run/php/
display_errors=Offtail -f /var/log/php_errors.log
看 pool 配置:
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
查看进程:
ps aux | grep php-fpm
systemctl status php8.1-fpm
journalctl -u php8.1-fpm
tail -f /var/log/php8.1-fpm.log
nginx -t
ls -l /run/php/
如果你愿意,可以把 具体报错信息(502、日志内容、Nginx 配置)贴出来,我可以帮你精准定位。