温馨提示×

ubuntu php-fpm如何排错

小樊
50
2026-10-10 07:16:03
栏目: 编程语言

在 Ubuntu 上排查 PHP‑FPM 问题,通常可以按下面这个“由外到内”的思路来排错。


一、先确认服务状态

systemctl status php-fpm
# 或(版本相关)
systemctl status php7.4-fpm
systemctl status php8.1-fpm

看是否:

  • active (running)
  • 还是 failed / dead

重启试试:

systemctl restart php8.1-fpm
journalctl -u php8.1-fpm -n 50

二、查看 PHP‑FPM 错误日志(最重要)

1. 找到日志位置

通常在:

/var/log/php8.1-fpm.log
# 或
/var/log/php-fpm.log

查看:

tail -f /var/log/php8.1-fpm.log

常见错误:

  • pool www cannot be started
  • permission denied
  • too many open files

三、检查 PHP‑FPM 配置

1. 主配置

/etc/php/8.1/fpm/php-fpm.conf

2. Pool 配置(最常用)

/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

常见坑:

  • Nginx 用户无法访问 socket
  • socket 文件不存在

四、检查 Web 服务器(Nginx / Apache)

Nginx 示例

fastcgi_pass unix:/run/php/php8.1-fpm.sock;

检查:

ls -l /run/php/

如果 socket 不存在:

  • PHP‑FPM 没启动
  • 或 listen 路径不一致

测试 Nginx 配置:

nginx -t
systemctl reload nginx

五、PHP 本身报错

1. 查看 php.ini 错误设置

/etc/php/8.1/fpm/php.ini
display_errors = Off   # 生产环境
log_errors = On
error_log = /var/log/php_errors.log

2. 手动测试 PHP

php -v
php -m
php /var/www/html/test.php

六、常见典型问题与解决

1. 502 Bad Gateway

原因:

  • PHP‑FPM 没运行
  • socket 路径不对
  • 权限不足

排查:

systemctl status php8.1-fpm
ls -l /run/php/

2. 空白页面

  • display_errors=Off
  • 脚本 fatal error
tail -f /var/log/php_errors.log

3. 性能问题 / 卡死

看 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 配置)贴出来,我可以帮你精准定位。

0 踩