温馨提示×

ubuntu php日志怎么分割

小樊
35
2026-10-24 01:56:42
栏目: 编程语言

在 Ubuntu 上,PHP 本身不会自动分割日志,通常由 Web 服务器(Nginx / Apache)或日志系统(logrotate) 来负责。下面按常见场景说明。


一、PHP-FPM 日志分割(最常见)

如果你用的是 PHP-FPM(Ubuntu 默认),日志一般在:

/var/log/php8.1-fpm.log
# 或
/var/log/php-fpm/error.log

方法 1:使用 logrotate(推荐 ✅)

  1. 创建 logrotate 配置:
sudo nano /etc/logrotate.d/php-fpm
  1. 写入内容(示例):
/var/log/php*-fpm.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        systemctl reload php8.1-fpm > /dev/null 2>&1 || true
    endscript
}
  1. 测试:
sudo logrotate -d /etc/logrotate.d/php-fpm
sudo logrotate -f /etc/logrotate.d/php-fpm

二、Nginx + PHP 日志分割

Nginx 访问/错误日志:

/var/log/nginx/access.log
/var/log/nginx/error.log

Ubuntu 自带 nginx 的 logrotate:

/etc/logrotate.d/nginx

一般已配置好,按天分割、自动 reload。

如果你是 PHP 自己写日志(error_log()):

error_log('/var/log/php/app.log');

那也要用 logrotate:

/var/log/php/*.log {
    daily
    rotate 30
    compress
    missingok
    notifempty
}

三、Apache + PHP 日志分割

Apache 默认有:

/etc/logrotate.d/apache2

已支持按天切割,无需额外配置。


四、PHP 自身按大小/时间分割(不推荐)

PHP 没有内建日志轮转功能,不推荐:

  • ini_set('error_log') 只能指定文件
  • 不支持自动切割

可用 Monolog(PHP 日志库):

use Monolog\Handler\RotatingFileHandler;

$log = new Logger('app');
$log->pushHandler(new RotatingFileHandler(
    '/var/log/php/app.log',
    30 // 保留30天
));

五、推荐方案总结 ✅

场景 推荐方式
PHP-FPM logrotate
Nginx logrotate(自带)
Apache logrotate(自带)
应用日志 Monolog + logrotate

如果你告诉我:

  • Ubuntu 版本
  • PHP 版本
  • Web 服务器(Nginx / Apache)
  • 具体是哪个日志文件

我可以给你精准配置示例。

0 踩