温馨提示×

如何调试Ubuntu PHP-FPM

小樊
45
2026-07-28 01:04:19
栏目: 编程语言

调试 Ubuntu 下的 PHP-FPM 通常从「日志 → 配置 → 进程 → 端口/套接字 → 权限」这几个层面入手。下面给你一套常用且实用的调试流程,从基础到进阶。


一、先确认 PHP-FPM 是否正常运行

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

✅ 正常状态应为 active (running)
❌ 如果是 failed,直接看日志:

journalctl -u php8.1-fpm -xe

二、查看 PHP-FPM 日志(最关键)

1️⃣ 错误日志位置

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

查看最近错误:

tail -n 100 /var/log/php8.1-fpm.log

常见错误:

  • pool www does not exist
  • failed to listen on socket
  • permission denied

三、检查 PHP-FPM 配置

1️⃣ 主配置文件

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

2️⃣ Pool 配置(最常见问题)

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

重点检查:

✅ 监听方式(socket 或端口)

listen = /run/php/php8.1-fpm.sock
; 或
listen = 127.0.0.1:9000

⚠️ Nginx / Apache 必须一致


3️⃣ Socket 权限(非常常见)

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

如果你用 Nginx:

ps aux | grep nginx

确认 Nginx 用户是 www-data


四、检查进程是否真的在监听

Socket 方式:

ls -l /run/php/php8.1-fpm.sock

端口方式:

ss -lntp | grep 9000

五、测试 PHP-FPM 是否可响应

1️⃣ 直接用 PHP 测试

php -v

2️⃣ 测试 FPM 进程

sudo -u www-data php /var/www/html/test.php

六、Nginx + PHP-FPM 调试(最常见组合)

Nginx 配置示例

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

常见错误

错误 原因
502 Bad Gateway socket 不存在 / 权限不对
504 Gateway Timeout FPM 进程卡死
File not found SCRIPT_FILENAME 错误

七、开启 PHP 错误显示(调试代码)

修改 php.ini

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

然后重启:

systemctl restart php8.1-fpm

八、重启 & 重载(很重要)

systemctl restart php8.1-fpm
# 或
systemctl reload php8.1-fpm

九、快速排错清单(实战)

✅ PHP-FPM 是否在运行
✅ 日志有没有报错
✅ socket / 端口是否匹配
✅ 权限是否正确
✅ Nginx 配置是否正确
SCRIPT_FILENAME 是否对


十、如果你愿意,我可以帮你精准定位

你可以直接贴出:

  1. Ubuntu 版本
  2. PHP 版本
  3. 报错信息(502 / 空白页 / 日志)
  4. Nginx 或 Apache 配置
  5. www.conflisten 部分

我可以一步一步帮你定位 ✅

0