讲师中心 微信公众号
AI工具推荐 视频效率加速

如何配置PHP 8.1的错误日志定期轮转_结合Linux的logrotate工具

雨静同学_2243

雨静同学_2243

发布时间:2026-04-26 21:33:17

|

223人浏览过

|

来源于php中文网

原创

PHP 8.1自身不支持日志轮转,需依赖logrotate配合kill -USR2信号通知php-fpm平滑重开日志句柄;配置前须确认error_log路径和php-fpm worker用户(如www-data),并确保postrotate中信号发送正确、权限匹配、sharedscripts成对使用,否则日志仍写入旧文件。

如何配置php 8.1的错误日志定期轮转_结合linux的logrotate工具

PHP 8.1 自身不支持日志轮转,必须靠 logrotate 配合 USR2 信号通知 php-fpm 重开日志文件句柄;漏掉 postrotate 或信号发错,日志就还在往旧文件写,轮转等于白配。

确认 PHP 错误日志路径和 php-fpm 进程用户

先查清楚两个关键信息,否则后续所有配置都会失效:

  • error_logphp.iniwww.conf 里设的是什么?常见路径如 /var/log/php-fpm/www-error.log/var/log/php/error.log
  • php-fpm worker 进程以谁的身份运行?用 ps aux | grep php-fpm 看 USER 列,通常是 www-data(Debian/Ubuntu)或 nginx(CentOS/RHEL)
  • 对应的 pid 文件在哪?/var/run/php/php8.1-fpm.pid 是典型路径,但得 ls /var/run/php/ 实际确认,别硬套版本号

编写 /etc/logrotate.d/php81 的最小可用配置

创建配置文件后,内容必须包含权限、轮转逻辑和信号通知三要素。以下是最简但可上线的模板:

/var/log/php-fpm/www-error.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 www-data adm
    sharedscripts
    postrotate
        if [ -f /var/run/php/php8.1-fpm.pid ]; then
            kill -USR2 $(cat /var/run/php/php8.1-fpm.pid)
        fi
    endscript
}

注意点:

Linux Journey
Linux Journey

当用户想学习Linux基础、命令行、文件系统等时,在LabEx查找并推荐免费的Linux Journey课程。

下载

立即学习PHP免费学习笔记(深入)”;

  • create 640 www-data adm 中的用户组必须匹配 php-fpm worker 用户,否则新日志无法写入,错误会静默丢弃
  • sharedscriptspostrotate 必须成对出现,否则多个日志文件轮转时可能重复 reload,引发短时请求失败
  • 不要用 systemctl reload php8.1-fpm 替代 kill -USR2:前者是重启进程,后者才是平滑重开日志,无请求中断

验证配置是否生效的三步检查法

别等 cron 自动跑,手动验证才能避开“以为配好了其实没生效”的坑:

  • 语法检查:logrotate -d /etc/logrotate.d/php81 —— 看输出里有没有 error:warning:
  • 强制轮转一次:logrotate -f /etc/logrotate.d/php81 —— 检查旧日志是否被重命名(如 www-error.log.1),新日志是否生成且权限正确
  • 确认 php-fpm 是否切换了文件句柄:lsof -p $(cat /var/run/php/php8.1-fpm.pid) | grep www-error —— 轮转后应只显示新文件名,如果还挂着 .1 就说明 USR2 没起作用

容器环境或 error_log = syslog 的特殊处理

这两种情况 logrotate 完全无效,必须换思路:

  • 若 PHP 运行在 Docker 中,且日志输出到 stdout/stderr(推荐做法),轮转由容器运行时控制:docker run --log-opt max-size=10m --log-opt max-file=3,PHP 自身不写文件
  • error_log = syslog,logrotate 对 /dev/log 无能为力;得改用 rsyslog 或 systemd-journald 的原生轮转机制,比如在 /etc/rsyslog.d/50-php.conf 里配 $FileCreateMode 0640$MaxFileSize
  • 若 Nginx 用 fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php-error.log" 动态指定路径,那这个 /var/log/nginx/php-error.log 才是 logrotate 的目标,且 postrotate 应该 reload nginx,不是 php-fpm

最容易被忽略的是:logrotate 不读取 PHP 配置,它只认你写的路径;而 php-fpm 收到 USR2 后是否真能打开新日志,取决于那个路径的父目录权限、SELinux 上下文(CentOS)、以及是否存在同名 symlink 指向不可写位置——这些都得在 postrotate 后手动验证一次。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

9144

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

5541

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2015

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

3428

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

4114

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

3231

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4577

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

3562

2023.11.13

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

0

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn