PHP7.4-fpm日志无法写入:仅显示日志重开通知求助
问题原因及解决方法
可能原因
- 日志轮转后文件句柄未正确绑定:系统通过
logrotate管理日志时,会重命名原日志文件并创建新文件。如果轮转配置未正确向PHP-FPM主进程发送USR1信号触发日志重开,或信号发送后进程未正确处理,会导致FPM继续往旧的已重命名文件写入,而新文件仅显示重开提示。 - 磁盘资源耗尽:磁盘空间不足或inode耗尽,即使权限正常也无法写入日志。
- PHP-FPM进程异常:主进程或子进程的文件描述符泄漏、状态异常,导致日志重开操作未生效。
解决步骤
手动触发日志重开
直接向PHP-FPM主进程发送USR1信号,强制重新打开日志文件句柄:pkill -USR1 php-fpm7.4之后用PHP脚本测试日志写入,查看新日志是否正常生成。
检查日志轮转配置
打开/etc/logrotate.d/php7.4-fpm(路径可能因系统不同略有差异),确认postrotate段包含正确的信号发送命令:postrotate /usr/bin/pkill -USR1 php-fpm7.4 endscript若配置缺失或错误,补充后保存,下次轮转时自动生效。
验证磁盘资源
- 执行
df -h检查目标磁盘是否已满,清理无用文件释放空间; - 执行
df -i检查inode是否耗尽,删除大量小文件或调整inode配置(需重启系统)。
- 执行
重启PHP-FPM服务
若上述方法无效,直接重启服务强制进程重新初始化所有资源:systemctl restart php7.4-fpm快速验证权限(排除隐性问题)
即使之前权限正常,也可快速确认:ls -l /var/log/php7.4-fpm.log sudo -u www-data echo "test log entry" >> /var/log/php7.4-fpm.log若手动写入失败,说明权限或SELinux等机制存在问题,需进一步调整。
内容的提问来源于stack exchange,提问作者Obada Qafisheh
相关产品推荐
相关产品推荐

