在 Ubuntu 上,PHP 本身的日志格式取决于 PHP 的运行方式(CLI / FPM / Apache module) 以及 日志配置。下面分情况说明。
log_errors = On
error_log = /var/log/php/php-error.log
如果没有指定 error_log,错误会写入:
单行文本格式:
[日期 时间] PHP 错误级别: 错误信息 in 文件 on 行号
示例:
[12-Jul-2024 10:23:45] PHP Warning: mysqli_connect(): (HY000/2002): Connection refused in /var/www/html/db.php on line 10
字段说明:
[12-Jul-2024 10:23:45]:时间(默认格式)PHP Warning:错误类型mysqli_connect():函数db.php on line 10:文件和行号PHP NoticePHP WarningPHP ErrorPHP Fatal errorPHP Parse errorPHP-FPM 日志文件通常在:
/var/log/php8.1-fpm.log
[12-Jul-2024 10:23:45] WARNING: [pool www] child 1234 exited on signal 11 (SIGSEGV)
[12-Jul 10:23:45] NOTICE: fpm is running
这是 FPM 进程日志,不是 PHP 代码错误日志。
日志位置:
/var/log/apache2/error.log
示例:
[Thu Jul 12 10:23:45.123456 2024] [php:warn] [pid 1234] PHP Warning: ...
格式由 Apache 控制,不是 PHP 自己定义。
CLI 默认:
示例:
PHP Fatal error: Uncaught Error: Call to undefined function test() in test.php:5
date.timezone = Asia/Shanghai
error_log("自定义日志内容");
写入格式就是普通字符串,无固定结构。
| 场景 | 日志位置 | 格式 |
|---|---|---|
| PHP 错误 | php-error.log | [时间] PHP 级别: 信息 in 文件 on 行 |
| PHP-FPM | php-fpm.log | [时间] 级别: 信息 |
| Apache | error.log | Apache 格式 + PHP 信息 |
| CLI | 终端 | 直接文本 |
如果你愿意,我可以: