在 CentOS 系统中,PHP 日志的清理方法取决于 PHP 的运行方式(如 PHP-FPM、Apache mod_php 等)以及日志的具体配置。以下是常见的清理步骤:
PHP 日志通常分为 PHP-FPM 日志 和 PHP 错误日志,位置由配置文件决定:
PHP-FPM 的日志配置在 php-fpm.conf 或 www.conf 中:
# 查找 php-fpm 配置文件
find /etc -name "php-fpm.conf" -o -name "www.conf"
# 查看日志路径(以 php-fpm.conf 为例)
grep -r "error_log" /etc/php-fpm.conf /etc/php-fpm.d/
常见路径:
/var/log/php-fpm/error.log(错误日志)/var/log/php-fpm/www-error.log(慢日志或请求日志,取决于配置)PHP 全局错误日志由 php.ini 配置:
# 查找 php.ini 位置
php -i | grep "Loaded Configuration File"
# 查看错误日志路径
grep "error_log" /etc/php.ini
常见路径:
/var/log/php/error.log/var/log/httpd/php_error.log(如果通过 Apache 运行)不要直接删除日志文件(可能导致进程无法写入新日志),而是清空内容:
# 清空单个日志(例如 PHP-FPM 错误日志)
sudo truncate -s 0 /var/log/php-fpm/error.log
# 清空多个日志(例如所有 php-fpm 相关日志)
sudo truncate -s 0 /var/log/php-fpm/*.log
echo 清空(备选)sudo echo "" > /var/log/php-fpm/error.log
如果清空后日志不更新,可能需要重启 PHP-FPM:
# CentOS 7/8
sudo systemctl restart php-fpm
# CentOS 6
sudo service php-fpm restart
使用 logrotate 工具自动管理日志(切割、压缩、删除旧日志),这是长期解决方案。
PHP-FPM 通常自带 logrotate 配置,若没有则手动创建:
sudo vim /etc/logrotate.d/php-fpm
/var/log/php-fpm/*.log {
daily # 每天轮转一次
missingok # 日志不存在时不报错
rotate 7 # 保留 7 天日志
compress # 压缩旧日志
delaycompress # 延迟压缩(下次轮转时压缩前一天的日志)
notifempty # 日志为空时不轮转
create 0640 www-data www-data # 新日志文件的权限和所有者(根据实际用户调整)
sharedscripts
postrotate
# 重启 PHP-FPM 以重新打开日志文件(CentOS 7+)
systemctl reload php-fpm > /dev/null 2>&1 || true
endscript
}
sudo logrotate -d /etc/logrotate.d/php-fpm # 模拟执行(不实际操作)
sudo logrotate -f /etc/logrotate.d/php-fpm # 强制立即执行
root 或 www-data(Apache/Nginx 用户),操作时需要 sudo。truncate 或 logrotate 处理。/var/log/httpd/),需对应调整路径。php-fpm.conf 或 php.ini)。truncate -s 0 清空日志。logrotate 自动轮转,避免未来堆积。如果是临时清理,直接清空即可;如果是长期维护,务必设置 logrotate。