在 Ubuntu 上,PHP 的“日志格式”取决于 PHP 的运行方式(CLI / PHP-FPM / Apache mod_php) 以及 日志配置位置。下面分情况说明。
配置位置:
/etc/php/8.1/cli/php.ini
/etc/php/8.1/fpm/php.ini
关键配置:
log_errors = On
error_log = /var/log/php/php_errors.log
日志格式示例:
[12-Jul-2024 10:23:45 Asia/Shanghai] PHP Warning: Undefined variable $test in /var/www/html/index.php on line 10
[12-Jul-2024 10:23:46 Asia/Shanghai] PHP Fatal error: Uncaught Error: Call to undefined function test() in /var/www/html/index.php:15
✅ 格式特点:
[日期 时间 时区]PHP Warning / PHP Notice / PHP Fatal error配置文件:
/etc/php/8.1/fpm/php-fpm.conf
/etc/php/8.1/fpm/pool.d/www.conf
示例配置:
error_log = /var/log/php8.1-fpm.log
catch_workers_output = yes
日志格式:
[12-Jul-2024 10:25:11] WARNING: [pool www] child 1234 said into stderr: "PHP message: Undefined index: id"
[12-Jul-2024 10:25:12] ERROR: failed to ptrace(ATTACH)
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s
格式示例:
[12-Jul-2024 10:30:00] [pool www] pid 5678
script_filename = /var/www/html/index.php
[0x00007f...] sleep() /var/www/html/index.php:20
/var/log/apache2/error.log
格式示例:
[Thu Jul 12 10:35:00.123456 2024] [php:warn] [pid 2345] [client 127.0.0.1:5000] PHP Warning: Undefined variable $a in /var/www/html/test.php on line 5
CLI 通常不会写日志文件,而是直接输出到终端:
php index.php
输出:
PHP Warning: Undefined variable $test in /path/index.php on line 10
PHP 本身不支持像 Nginx 那样自定义访问日志格式,但你可以:
✅ 使用 error_log() 自定义内容
✅ 使用 Monolog 等日志库
✅ 在应用层统一格式,例如:
error_log(date('Y-m-d H:i:s') . " | ERROR | " . $msg);
tail -f /var/log/php/php_errors.log
tail -f /var/log/php8.1-fpm.log
tail -f /var/log/apache2/error.log
如果你愿意,可以告诉我:
我可以直接给你可用的配置文件示例。