在 Ubuntu 上设置 PHP 的日志级别,要看你用的是 PHP-FPM 还是 CLI(命令行),以及你是想控制 PHP 错误日志级别,还是 PHP-FPM 自身的日志级别。
下面分情况说明:
先确认 php.ini 位置:
php --ini
# 或
php -i | grep "Loaded Configuration File"
常见路径:
/etc/php/8.1/cli/php.ini/etc/php/8.1/fpm/php.ini编辑对应文件:
sudo nano /etc/php/8.1/fpm/php.ini
; 错误显示(开发环境建议 On,生产环境 Off)
display_errors = Off
; 是否记录错误日志
log_errors = On
; 错误日志文件
error_log = /var/log/php/php-error.log
; 错误级别(非常重要)
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
| 场景 | 配置 |
|---|---|
| 开发 | E_ALL |
| 生产 | E_ALL & ~E_DEPRECATED & ~E_STRICT |
| 只记录严重错误 | `E_ERROR |
修改后重启:
sudo systemctl restart php8.1-fpm
这是 PHP-FPM 进程 的日志,不是 PHP 代码错误。
配置文件:
sudo nano /etc/php/8.1/fpm/php-fpm.conf
或:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
; 日志级别
log_level = notice
可选值(从低到高):
alerterrorwarningnotice(默认)debugaccess.log = /var/log/php-fpm/access.log
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s
重启:
sudo systemctl restart php8.1-fpm
CLI 和 FPM 是 两套 php.ini:
sudo nano /etc/php/8.1/cli/php.ini
设置方式同上。
tail -f /var/log/php/php-error.log
tail -f /var/log/php-fpm/error.log
| 你想控制什么 | 改哪里 |
|---|---|
| PHP 报错内容 | php.ini → error_reporting |
| PHP 是否写日志 | php.ini → log_errors |
| FPM 自身日志 | php-fpm.conf / www.conf |
| 慢请求 | www.conf → slowlog |
如果你愿意,可以告诉我:
我可以直接给你一份可直接用的配置。