You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制EC2上php-fpm的access.log大小或配置logrotate?

限制PHP-FPM访问日志大小的方法

PHP-FPM本身没有内置的日志轮转或大小限制配置,我们可以用Linux系统默认的logrotate工具来解决这个问题,这是处理日志文件过大的标准方案。

步骤1:创建logrotate配置文件

在/etc/logrotate.d/目录下创建针对该日志的专属配置文件,比如命名为php-fpm-wordpress:

sudo nano /etc/logrotate.d/php-fpm-wordpress

写入以下配置内容:

/var/log/wordpress.access.log {
    # 可选规则:按时间轮转(每天一次),若要按大小轮转,替换为 size 100M(超过100M触发轮转)
    daily
    # 日志文件不存在时不抛出错误
    missingok
    # 保留最近7份轮转后的日志文件
    rotate 7
    # 对旧日志进行压缩
    compress
    # 延迟压缩,保留最新的一份旧日志不压缩(方便排查近期问题)
    delaycompress
    # 空文件不执行轮转操作
    notifempty
    # 轮转后创建新日志文件,设置权限、属主和属组(根据实际环境调整,www-data是PHP-FPM常用运行用户)
    create 640 www-data adm
    # 轮转后通知PHP-FPM重新打开日志文件,避免继续写入旧文件的inode
    postrotate
        kill -USR1 $(cat /var/run/php-fpm.pid)
    endscript
}

步骤2:验证并测试配置

  • 先执行调试模式,检查配置是否存在语法错误:

    sudo logrotate -d /etc/logrotate.d/php-fpm-wordpress
    

    输出无报错则说明配置有效。

  • 强制执行一次轮转,验证实际效果:

    sudo logrotate -f /etc/logrotate.d/php-fpm-wordpress
    

    执行后查看/var/log/目录,会生成wordpress.access.log.1(开启压缩后后续会自动转为.gz格式),原日志文件会被重置为空。

步骤3:调整PHP-FPM PID文件路径(若需)

如果执行kill命令时报错,说明PID文件路径不正确。可以查看PHP-FPM主配置文件(比如/etc/php-fpm.conf)里的pid配置项,找到实际的PID文件路径,替换postrotate中的路径即可。例如:

kill -USR1 $(cat /var/run/php/php8.1-fpm.pid)

补充说明

  • 系统默认的logrotate会通过cron每日自动执行(对应脚本位于/etc/cron.daily/logrotate),配置完成后会自动按规则轮转日志。
  • 可根据需求调整轮转频率(如weekly每周、monthly每月)或保留日志的数量(修改rotate后的数字)。

内容的提问来源于stack exchange,提问作者Miles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 20:35:08