phpenv 不管理 PHP-FPM 慢日志,慢日志需在对应 PHP-FPM 的 pool 配置中启用并确保路径权限正确,且仅对 FPM 处理的 HTTP 请求生效。
php
env 本身不管理 PHP-FPM 慢日志
phpenv 是用来切换 PHP CLI 版本的工具,它不启动、不配置、也不控制 php-fpm 进程。你看到的
、
等配置项,全部属于
的运行时配置,和 phpenv 无关。
常见误解是:在 phpenv 切换完 PHP 7.4 后,以为改了
或执行
就能开慢日志——这完全无效。慢日志必须由实际运行 Web 请求的 php-fpm worker 进程读取并生效。
所以第一步得确认:你现在网站跑在哪个 PHP-FPM 实例上?不是 phpenv 列出的版本,而是 Nginx/Apache 背后调用的那个
服务,比如
或
。
找到并修改对应 PHP-FPM 的 pool 配置文件
慢日志配置必须写在 pool 段(如
),不能只写在全局
。常见路径有:
立即学习
“
PHP免费学习笔记(深入)
”;
(Ubuntu/Debian 系统)
(源码编译安装)
(宝塔面板,数字 82 表示 PHP 8.2)
打开后确保这三行同时存在且未被注释:
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
注意:
路径的父目录(如
)必须由 php-fpm worker 用户(通常是
或
)可写,否则日志静默失败。可用
查归属,必要时运行:
(用户名按实际调整)。
重载 php-fpm 之前务必验证配置语法
改完配置别急着重启,先做两件事:
运行
(或带版本前缀,如
)检查语法是否正确;
确认当前生效的配置路径:用
找到 master 进程命令行,看它加载的是哪个
参数,例如
;
用
确保没在其他 pool 文件里重复/冲突定义。
验证通过后,再执行重载:
(Ubuntu/Debian)或
(源码安装)。仅 restart 不够,reload 才能平滑切换配置。
日志里看不到内容?重点排查这三处
最常遇到“配置写了、也 reload 了、但日志空空如也”,问题通常出在:
设太高(比如
),而真实卡顿在
,直接漏掉;建议从
起调,观察后再收紧;
日志路径权限不对:php-fpm worker 进程用户无法写入
文件或其父目录,
无输出时,立刻查
看是否有 “failed to open slowlog” 类报错;
请求根本没走 php-fpm:比如你在本地用
测试,或用了 Swoole、RoadRunner 等非 FPM SAPI,slowlog 完全不触发——它只对 FPM 处理的 HTTP 请求有效。
真正起效后的日志行,第一行是时间戳 + pool 名 + pid +
,后面几行是 backtrace,关键信息永远在最后一行(最深调用点),比如
——那行就是瓶颈所在,别被中间层函数名带偏。
slowlogrequest_slowlog_timeoutphp-fpmphp.iniphpenv rehashphp-fpmphp8.2-fpm/usr/local/php/bin/php-fpm[www]php-fpm.conf/etc/php/8.2/fpm/pool.d/www.conf/usr/local/php/etc/php-fpm.d/www.conf/www/server/php/82/etc/php-fpm.confslowlog = /var/log/php-fpm-slow.log
request_slowlog_timeout = 2s
request_terminate_timeout = 0slowlog/var/log/www-datawwwls -ld /var/log/sudo chown www-data:www-data /var/log/php-fpm-slow.logphp-fpm -tphp8.2-fpm -tps aux | grep php-fpm-y-y /etc/php/8.2/fpm/php-fpm.confgrep -r "slowlog\|request_slowlog_timeout" /etc/php/8.2/fpm/sudo systemctl reload php8.2-fpmsudo kill -USR2 $(cat /usr/local/php/var/run/php-fpm.pid)request_slowlog_timeout30s3–5s2sslowlogtail -f /var/log/php-fpm-slow.logsudo journalctl -u php8.2-fpm -n 50php index.phpscript_filenamecurl_exec() /var/www/api.php:142