- 首页 >
- 问答 >
-
云计算 >
- Ubuntu PHP日志存储策略是什么
Ubuntu PHP日志存储策略是什么
小樊
44
2025-12-06 00:14:23
Ubuntu PHP日志存储策略
策略总览
- 在 Ubuntu 上,PHP 的日志并非由单一统一机制管理,而是由多来源共同产生与存储:包括 PHP-FPM 日志、Web 服务器错误日志(Apache/Nginx)、以及 PHP 运行时错误日志(由 php.ini 的 error_log 指定)。这些日志通常写入 /var/log/ 下的相应目录,并通过 logrotate 进行按日/按大小的轮转、压缩与保留管理,必要时配合 syslog 或应用内日志库(如 Monolog)进行更灵活的落盘与归档。
日志来源与默认路径
- PHP-FPM:常见路径为 /var/log/php-fpm/error.log,部分发行版或配置下还会有 /var/log/php-fpm/access.log 或 /var/log/php-fpm/www.access.log;具体以 php-fpm.conf / www.conf 中的 error_log 与 access.log 配置为准。
- Apache + PHP:PHP 错误通常写入 /var/log/apache2/error.log;Web 访问日志为 /var/log/apache2/access.log(PHP 的 display_errors 应关闭于生产环境)。
- Nginx + PHP:PHP 错误通常写入 /var/log/nginx/error.log;Web 访问日志为 /var/log/nginx/access.log(PHP-FPM 错误仍由 php-fpm 自身日志或 fastcgi 配置决定)。
- 自定义 PHP 错误日志:在 php.ini 中通过 error_log = /var/log/php_errors.log 指定;也可在代码中使用 error_log($msg, 3, ‘/path/file.log’) 写入应用专用日志。
轮转与保留机制
- 系统级轮转:Ubuntu 通过 logrotate 统一管理日志轮转,通常按日执行(由 /etc/cron.daily/logrotate 触发)。常见策略为 daily + rotate 7 + compress,并对新日志设置合适权限与属主(如 create 640 www-data adm 或 root adm)。
- PHP-FPM 专用配置示例(/etc/logrotate.d/php-fpm):
- 路径匹配:/var/log/php-fpm/*.log
- 关键指令:daily、missingok、rotate 7、compress、delaycompress、notifempty、create 640 www-data adm、sharedscripts
- 通知 PHP-FPM 重新打开日志文件:postrotate kill -USR2 $(cat /var/run/php-fpm/php-fpm.pid) endscript
- 测试与生效:logrotate -d 校验、logrotate -f 强制执行。
- 自定义应用日志:为应用日志单独创建 /etc/logrotate.d/php-app,采用与 FPM 类似的策略;如使用 Monolog 的 RotatingFileHandler 可在应用层实现按大小滚动,再由系统 logrotate 做二次压缩与清理。
配置与运维要点
- 安全与合规:生产环境务必设置 display_errors = Off,仅开启 log_errors = On;自定义 error_log 路径并对日志文件设置最小权限(如 640),属主与属组遵循最小权限原则(如 www-data adm 或 root adm)。
- 路径与生效:修改 php.ini 或 php-fpm 配置后,按需重启服务(如 systemctl restart php-fpm 或重启 Apache/Nginx);变更 logrotate 后先用 -d 校验,再用 -f 测试,避免线上异常。
- 监控与告警:对日志目录设置 磁盘空间监控 与 异常关键字告警(如 FPM crash、频繁 5xx、慢请求),可结合 Monit/Nagios/Zabbix 等工具实现自动化运维。