温馨提示×

php-fpm在ubuntu如何调试

小樊
33
2026-08-12 09:33:12
栏目: 编程语言

在 Ubuntu 上调试 php-fpm 可以从 日志、配置、进程、请求链路 等多个层面入手。下面按常见场景给你一套实用调试方法。


一、确认 php-fpm 是否正常运行

1. 查看服务状态

systemctl status php-fpm
# 或(Ubuntu 常见)
systemctl status php8.1-fpm

如果没启动:

systemctl start php8.1-fpm
systemctl enable php8.1-fpm

二、查看 php-fpm 日志(最重要)

1. 错误日志位置

常见路径:

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

或:

/var/log/php8.1-fpm/error.log

查看实时日志:

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

2. 调整日志级别(推荐)

编辑:

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

修改:

log_level = debug

然后重启:

systemctl restart php8.1-fpm

三、查看 pool(池)配置与日志

1. 查看 pool 配置

ls /etc/php/8.1/fpm/pool.d/

常见文件:

www.conf

2. 检查 pool 日志

catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm-www-error.log
php_admin_value[log_errors] = On

否则 PHP 脚本错误不会输出到 fpm 日志


四、确认 php-fpm 监听方式(常见坑)

1. 查看监听方式

grep listen /etc/php/8.1/fpm/pool.d/www.conf

常见两种:

✅ socket(推荐)

listen = /run/php/php8.1-fpm.sock

✅ TCP

listen = 127.0.0.1:9000

2. Nginx / Apache 是否匹配

Nginx 示例

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

如果不匹配,请求会直接 502。


五、502 / 504 错误调试

1. 快速排查步骤

# php-fpm 是否在运行
ps aux | grep php-fpm

# socket 文件是否存在
ls -l /run/php/

# nginx 错误日志
tail -f /var/log/nginx/error.log

2. 常见原因

问题 排查
socket 权限不足 listen.owner/listen.group
未启动 systemctl
进程数耗尽 pm.max_children
超时 request_terminate_timeout

六、调试 PHP 脚本本身

1. 打开 PHP 错误显示

/etc/php/8.1/fpm/php.ini
display_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php-fpm-script.log

2. 测试 PHP 是否执行

sudo -u www-data php -r "echo 'OK';"

七、手动调用 php-fpm(高级调试)

1. 直接测试 fastcgi

SCRIPT_FILENAME=/var/www/html/index.php \
REQUEST_METHOD=GET \
cgi-fcgi -bind -connect /run/php/php8.1-fpm.sock

八、进程与性能调试

1. 查看进程

ps aux | grep php-fpm

2. 调整进程数(www.conf)

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

九、推荐调试组合(实战)

# 实时日志
tail -f /var/log/php8.1-fpm.log

# nginx 错误
tail -f /var/log/nginx/error.log

# php 错误
tail -f /var/log/php-fpm-script.log

十、常见命令速查

systemctl restart php8.1-fpm
journalctl -u php8.1-fpm -f
php-fpm8.1 -t   # 配置语法检查

如果你愿意,可以把 具体报错(502 / 504 / 空白页 / 超时)或日志贴出来,我可以直接帮你定位是哪一层的问题。

0