PHP-FPM 怎么开启 status 页面查看进程状态?配置步骤是什么?

文章导读
开启 PHP-FPM status 页面需要在进程池配置文件中设置 pm.status_path 参数,并在 Web 服务器(如 Nginx 或 Apache)中配置将该路径请求转发给 PHP-FPM 处理。此功能仅建议在内网或受控环境开启,直接暴露到公网存在信息泄露风险。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

开启 PHP-FPM status 页面需要在进程池配置文件中设置 pm.status_path 参数,并在 Web 服务器(如 Nginx 或 Apache)中配置将该路径请求转发给 PHP-FPM 处理。此功能仅建议在内网或受控环境开启,直接暴露到公网存在信息泄露风险。

先说结论:PHP-FPM 状态页通过特定配置路径暴露进程指标,配置核心在于修改 pool 配置文件并配合 Web 服务器做访问控制。

  • 适合:需要监控 PHP 进程活跃度、排查慢请求或集成监控系统的场景。
  • 先准备:确认 PHP-FPM 版本支持 status 页,备份原有配置文件,规划访问控制策略。
  • 验收:通过 curl 命令访问指定路径能返回进程数据,且外网无法直接访问该路径。

命令速用版

在 PHP-FPM 进程池配置文件(通常为 www.conf)中添加或修改以下配置项,即可定义状态页访问路径。

pm.status_path = /status

若使用 Nginx,需在 server 配置块中添加 location 规则,将请求 FastCGI 转发给 PHP-FPM。

location /status {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
}

为什么会这样

PHP-FPM 内置了状态页功能,用于输出当前进程池的运行指标,无需安装额外扩展。

该功能由 FPM 进程直接处理,绕过 PHP 脚本执行,因此能反映进程管理器本身的负载情况。配置 pm.status_path 后,FPM 会监听该 URI 请求并返回格式化数据,常用于配合监控系统(如 Prometheus)或人工排查进程堆积问题。

分步处理

按照以下顺序修改配置,确保每一步生效后在进行下一步,避免服务中断。

PHP-FPM 怎么开启 status 页面查看进程状态?配置步骤是什么?

步骤 1:定位配置文件

找到 PHP-FPM 的进程池配置文件,常见路径为 /etc/php/版本/fpm/pool.d/www.conf/etc/php-fpm.d/www.conf

步骤 2:开启状态路径

编辑配置文件,查找 pm.status_path 项。如果该行被注释(前方有分号),去掉分号并设置路径,例如:

pm.status_path = /fpm-status

保存文件后,重启 PHP-FPM 服务使配置生效。

步骤 3:配置 Web 服务器

在 Nginx 或 Apache 中配置该路径的转发规则。Nginx 示例如下,确保 fastcgi_pass 地址与 PHP-FPM 监听地址一致:

PHP-FPM 怎么开启 status 页面查看进程状态?配置步骤是什么?
location /fpm-status {
    fastcgi_pass   127.0.0.1:9000;
    include        fastcgi_params;
}

步骤 4:设置访问控制

为防止信息泄露,务必限制访问 IP。Nginx 中可使用 allowdeny 指令,仅允许内网 IP 访问:

allow 127.0.0.1;
allow 192.168.1.0/24;
deny all;

怎么验证是否生效

使用 curl 命令在服务器本地访问配置的路径,检查是否返回进程状态数据。

执行以下命令,若返回包含 poolprocess manager 等字段则配置成功:

PHP-FPM 怎么开启 status 页面查看进程状态?配置步骤是什么?
curl http://127.0.0.1/fpm-status

若需要查看详细信息,可在 URL 后添加 ?full 参数。同时尝试从外网 IP 访问,确认返回 403 Forbidden 或连接被拒绝,以验证访问控制生效。

常见坑

配置过程中容易忽略权限控制和路径冲突,导致安全风险或服务异常。

  • 安全风险:未配置 IP 白名单直接将状态页暴露到公网,攻击者可获取服务器内部进程信息。
  • 路径冲突:设置的 pm.status_path 与现有业务路由重复,导致正常页面无法访问或状态页无法加载。
  • 权限不足:Web 服务器用户无权访问 PHP-FPM Socket 文件,导致转发请求时返回 502 Bad Gateway。

常见问题

默认的状态页路径是什么?

PHP-FPM 没有强制默认路径,必须在配置文件中显式设置 pm.status_path 才能启用。

开启状态页会影响性能吗?

正常监控访问对性能影响可忽略,但频繁请求 ?full 参数会消耗少量 CPU 资源。

为什么访问状态页返回 404?

通常是因为 Web 服务器未正确配置 location 规则,请求未被转发给 PHP-FPM 处理。

参考来源

  • PHP Manual - FPM Configuration, 页面标题:FPM Configuration, URL: https://www.php.net/manual/en/install.fpm.configuration.php
  • PHP Manual - FPM Status, 页面标题:FPM Status, URL: https://www.php.net/manual/en/fpm.status.php