php 8.6 启用 fpm 状态页需配置 pm.status_path(如 /fpm-status),配合 nginx 精确匹配、ip 白名单及 fastcgi_pass 转发,并重载 php8.6-fpm 和 nginx 服务。

PHP 8.6 中启用 PHP-FPM 状态页的方式与早期版本一致,核心是配置 pm.status_path 并配合 Web 服务器(如 Nginx)做安全路由转发。状态页本身不依赖 PHP 版本新特性,但需注意 PHP 8.6 默认启用 JIT 和更严格的日志/安全策略,配置时要兼顾兼容性与安全性。
1. 在 FPM 进程池配置中启用状态路径
编辑你的进程池配置文件(通常是 /etc/php/8.6/fpm/pool.d/www.conf 或类似路径),添加或取消注释以下行:
-
推荐设置一个语义清晰的路径,例如:
pm.status_path = /fpm-status - 该路径必须以
/开头,不能带查询参数或文件扩展名 - 如果使用多个进程池,每个池可设不同路径(如
/fpm-status-www),但需在 Nginx 中分别映射
2. 重启 PHP-FPM 使配置生效
修改配置后必须重载服务,否则状态页不会响应:
- 常规系统:
sudo systemctl reload php8.6-fpm - Docker 容器(无 systemctl):
docker kill --signal=USR2 <container_id></container_id> - 若不确定主进程 PID,可用:
sudo pkill -f "php-fpm: master" && sudo php-fpm8.6(不推荐生产环境直接启停)
3. 配置 Nginx 转发请求到状态页
在对应 server 块中添加 location,确保它绕过 PHP 脚本解析逻辑:
- 用
=精确匹配提升优先级:location = /fpm-status { - 禁用访问日志减少干扰:
access_log off; - 限制仅允许本地或监控服务器访问:
allow 127.0.0.1;allow 10.10.0.50;deny all; - 关键:不设置
SCRIPT_FILENAME到磁盘路径,而是交由 FPM 内部处理:fastcgi_param SCRIPT_NAME $fastcgi_script_name;include fastcgi_params;fastcgi_pass 127.0.0.1:9000;(或 Unix socket:fastcgi_pass unix:/run/php/php8.6-fpm.sock;)
4. 验证与访问方式
配置完成后,只能从白名单 IP 访问:
- 本地测试:
curl http://localhost/fpm-status - 查看 JSON 格式(便于监控系统采集):
curl "http://localhost/fpm-status?json" - 查看完整信息(含每个 worker 进程详情):
curl "http://localhost/fpm-status?full&html" - 返回非 200 或空白内容?检查:
– FPM 是否已重载
– Nginx 是否已重载(nginx -s reload)
–listen.allowed_clients是否允许 Nginx 所在 IP 连接 FPM(尤其 Docker 或远程部署场景)
不复杂但容易忽略:状态页输出不含 HTML 标签(除非加 &html),默认是纯文本;所有敏感字段(如请求 URL、脚本路径)都会显示,务必严格限制访问来源。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











