温馨提示×

centos php日志怎样优化

小樊
34
2026-10-20 15:12:42
栏目: 编程语言

在 CentOS 上优化 PHP 日志,通常可以从日志级别、日志切割、存储位置、性能影响、错误上报方式几个方面来做。下面按实用场景给你一套可落地方案。


一、PHP 自身日志优化(php.ini)

1. 合理设置错误级别

编辑 php.ini(路径通常是 /etc/php.ini 或 /etc/php.d/ 下):

; 生产环境
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
log_errors = On
error_log = /var/log/php/php_error.log

✅ 建议:

  • 生产环境 不要 display_errors
  • 开发环境可临时开启

2. 避免记录过多无害错误

; 忽略提醒类
error_reporting = E_ERROR | E_WARNING | E_PARSE

3. 限制单条日志大小

log_errors_max_len = 1024

防止超长 SQL / 堆栈把磁盘写爆。


二、PHP-FPM 日志优化(非常重要)

如果你用的是 PHP-FPM(CentOS 常见):

1. php-fpm.conf / pool 配置

路径示例:

/etc/php-fpm.conf
/etc/php-fpm.d/www.conf
; 慢日志(性能优化神器)
slowlog = /var/log/php/php-fpm-slow.log
request_slowlog_timeout = 2s

; 访问日志(可选,不建议长期开)
access.log = /var/log/php/php-fpm-access.log
access.format = "%R - %u %t \"%m %r\" %s"

; 错误日志
error_log = /var/log/php/php-fpm-error.log
log_level = warning

✅ 建议:

  • 慢日志 一定要开
  • access.log 仅在排查问题时开

三、日志切割(防止无限增长)

使用 logrotate(CentOS 自带)

新建:

/etc/logrotate.d/php

示例:

/var/log/php/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 nginx nginx
    sharedscripts
    postrotate
        systemctl reload php-fpm > /dev/null 2>&1 || true
    endscript
}

测试:

logrotate -d /etc/logrotate.d/php

四、磁盘 & 性能优化建议

1. 日志单独分区或目录

避免 /var 被写满:

mkdir -p /var/log/php
chown nginx:nginx /var/log/php

2. 高并发场景

  • 关闭 access.log
  • log_level = error
  • 使用 异步日志(如 Sentry / ELK)

五、进阶方案(推荐生产环境)

1. 使用 Sentry(不写本地磁盘)

// composer require sentry/sentry
  • 实时错误
  • 不占磁盘
  • 支持堆栈追踪

2. 集中日志(ELK / Loki)

  • Filebeat 收集 /var/log/php
  • 集中分析慢请求、500 错误

六、快速检查清单 ✅

  • [ ] display_errors = Off
  • [ ] log_errors = On
  • [ ] php-fpm slowlog 已开
  • [ ] logrotate 已配置
  • [ ] 日志目录权限正确
  • [ ] 磁盘监控已加

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • PHP 版本(5.6 / 7.x / 8.x)
  • 是否高并发 / 接口服务

我可以给你定制版配置。

0 踩