在 Ubuntu 上开启 PHP 慢日志(slow log),通常是指 PHP-FPM 的慢执行日志(不是 Nginx 的慢日志)。下面按常见场景说明。
Ubuntu 一般通过 php-fpm 运行 PHP:
ps aux | grep php-fpm
不同版本路径不同,例如:
# PHP 7.4
/etc/php/7.4/fpm/pool.d/www.conf
# PHP 8.1
/etc/php/8.1/fpm/pool.d/www.conf
# PHP 8.2
/etc/php/8.2/fpm/pool.d/www.conf
www.conf编辑对应版本的 www.conf:
sudo vim /etc/php/8.1/fpm/pool.d/www.conf
找到并修改以下三项(去掉前面的 ;):
; 慢日志路径
slowlog = /var/log/php-fpm/slow.log
; 超过多少秒算慢(例如 1 秒)
request_slowlog_timeout = 1s
; 可选:记录慢请求的完整 backtrace
request_terminate_timeout = 30s
⚠️ 注意:
request_slowlog_timeout 支持 s(秒),如 0.5ssudo mkdir -p /var/log/php-fpm
sudo chown www-data:www-data /var/log/php-fpm
sudo systemctl restart php8.1-fpm
tail -f /var/log/php-fpm/slow.log
示例内容:
[20-Oct-2024 10:00:00] [pool www] pid 12345
script_filename = /var/www/html/index.php
[0x00007f...] sleep() /var/www/html/index.php:10
如果是 Nginx 请求慢,和 PHP 无关:
# /etc/nginx/nginx.conf
log_format main '$request_time $upstream_response_time $request';
access_log /var/log/nginx/access.log main;
request_slowlog_timeout 已生效/var/log/php8.1-fpm.log
PHP CLI 不支持 slowlog,只在 FPM / CGI 模式有效。
如果你告诉我:
php -v)我可以给你更精确的配置。