温馨提示×

ubuntu php日志格式怎么设

小樊
42
2026-10-09 10:13:18
栏目: 编程语言

在 Ubuntu 上,PHP 日志格式主要取决于你用的是哪种 PHP 运行方式(CLI / PHP-FPM / Apache mod_php),以及你想记录到哪(文件、syslog、error_log)。下面按常见场景说明。


一、PHP 错误日志(最基本)

1️⃣ php.ini 中设置(通用)

编辑 php.ini(路径取决于运行方式):

# PHP-FPM
/etc/php/8.1/fpm/php.ini

# CLI
/etc/php/8.1/cli/php.ini

设置:

log_errors = On
error_log = /var/log/php/php-error.log

⚠️ PHP 本身不支持自定义 error_log 的“格式”,格式是固定的:

[日期] PHP 错误类型: 错误信息 in 文件 on 行

二、PHP-FPM 日志格式(可自定义)

2️⃣ PHP-FPM 慢日志 / 访问日志

慢日志(slow log)

slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s

格式示例:

[时间戳] [pool www] pid 12345
script_filename = /var/www/index.php
[0.xxx] function_name()

access log(类似 Nginx)

access.log = /var/log/php-fpm/access.log
access.format = "%R - %u %t \"%m %r\" %s"

常用变量:

  • %t 时间
  • %m 方法
  • %r 请求
  • %s 状态码
  • %D 耗时

三、Apache + mod_php 日志

Apache 控制日志格式:

LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/error.log

PHP 错误会写入 Apache error.log,格式由 Apache 决定。


四、CLI 模式日志

CLI 一般:

display_errors = On
log_errors = Off

或指定:

error_log = /var/log/php/cli-error.log

五、想“自定义 PHP 日志格式”怎么办?

PHP 不支持像 Nginx 那样定义格式,但你可以:

✅ 方法 1:用 error_log() + 自己写

error_log(sprintf(
  "[%s] USER=%s IP=%s MSG=%s\n",
  date('Y-m-d H:i:s'),
  $user,
  $_SERVER['REMOTE_ADDR'],
  $msg
), 3, '/var/log/php/app.log');

✅ 方法 2:用 Monolog(推荐)

composer require monolog/monolog
$log = new Monolog\Logger('app');
$log->pushHandler(new Monolog\Handler\StreamHandler(
  '/var/log/php/app.log',
  Monolog\Logger::INFO
));

$log->info('user login', [
  'ip' => $_SERVER['REMOTE_ADDR']
]);

可定义 JSON / 行格式。


六、推荐 Ubuntu 目录权限

sudo mkdir -p /var/log/php
sudo chown -R www-data:adm /var/log/php

总结

场景 是否可自定义格式
PHP error_log ❌ 固定格式
PHP-FPM access.log ✅ 可定义
Apache error.log ❌ Apache 决定
业务日志 ✅ 用 Monolog

如果你能告诉我:

  • PHP 版本
  • 运行方式(FPM / Apache / CLI)
  • 想记录什么内容

我可以给你一套直接可抄的配置。

0 踩