·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

3.4升级到3.5发现一个小问题,具体原因还不清楚

652 2
发表于 2023-3-19 17:08:18 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
升级到最后,完成第三方序列化数据转换后,就白屏了,什么都不显示,无任何出错信息,我赶紧去服务器看PHP以及MYSQL的运行记录,没有任何出错信息。

我就打开升级程序文件update_adult.php仔细看,发现在完成第三方序列化数据转换后,后面第一个读取的目录是 data/log里面往日运行、操作、出错等记录:

  1. show_msg("第三方序列化数据转换完成,即将进行下一步操作,请稍候......", '提示信息', 0, "$theurl?step=file");        }    }} else if ($step == 'file') {    logmessage("start file convert.");    encode_tree(__DIR__.'/../data/log/');    encode_tree(__DIR__.'/../source/plugin/');    encode_tree(__DIR__.'/../template/');
复制代码







莫非log文件有什么问题?随手就清空了那些log文件,然后回滚,再次运行,就OK了。

log目录内记录文件比较多,一个个查可能会很麻烦,只是有人知道这大概会是什么原因么?



我要说一句 收起回复

评论2

TyCodingLv.8 发表于 2023-3-19 17:08:50 | 查看全部
data/log/下的文件过多过大或存在恶意代码(比如被尝试恶意注入产生的拦截记录)导致无法顺利完成,可以将log文件移出备份后刷新即可
我要说一句 收起回复
AI智能体Lv.7 发表于 2025-3-13 00:56:05 | 查看全部
根据您描述的情况及代码片段分析,问题可能出在`data/log`目录的文件编码转换环节。结合Discuz技术手册和升级机制,建议从以下几个方面排查:

1. **文件编码冲突问题**
- 旧版本日志中可能包含特殊字符(如BOM头、二进制调试记录)
- 使用`file -i *.log`命令检查文件编码格式
- 可尝试在升级前执行:
  1. find ./data/log -name "*.log" -exec iconv -f GBK -t UTF-8 {} -o {}.utf8 \;
复制代码


2. **文件权限问题**
  1. // 检查目录写权限(升级程序需要递归修改文件)
  2. if(!is_writable(__DIR__.'/../data/log')){
  3.     show_error('日志目录不可写');
  4. }
复制代码


3. **大文件处理超时**
- 建议在升级前清理超过100MB的日志文件
- 修改php.ini配置:
  1. max_execution_time = 600
  2. memory_limit = 512M
复制代码


4. **损坏的序列化数据**
- 检查日志中可能存在的异常序列化结构:
  1. // 示例检测代码
  2. if(preg_match('/[^a-zA-Z0-9\:\;\\\{\}]/', file_get_contents($logfile))){
  3.     // 存在非法字符需要处理
  4. }
复制代码


5. **内存耗尽问题**
- 在升级脚本中加入内存监控:
  1. logmessage("Memory usage: ".memory_get_usage());
复制代码


**建议操作流程:**
1. 创建临时目录迁移历史日志
  1. mkdir /tmp/dz_logbackup && mv data/log/* /tmp/dz_logbackup
复制代码

2. 单独执行编码转换测试
  1. // 可创建test_encode.php模拟操作
  2. require './source/class/class_core.php';
  3. encode_tree(__DIR__.'/../data/log/');
复制代码

3. 逐批恢复日志文件测试

该问题的根本原因可能是旧版日志文件中存在:
- 未闭合的XML调试记录
- 损坏的SESSION序列化数据
- 包含非标UTF8字符的访问日志

建议后续维护时:
1. 在config_global.php中增加自动日志清理配置
  1. $_config['log']['maxsize'] = 10; // 单个日志最大MB数
复制代码

2. 使用crontab定期归档日志
  1. 0 3 * * * /usr/bin/find /data/log -mtime +30 -exec gzip {} \;
复制代码


若需要进一步分析具体日志特征,可提供单个异常日志样本(注意脱敏),我们将为您定制检测脚本。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:13.58.215.209,GMT+8, 2025-4-29 15:52 , Processed in 0.183486 second(s), 82 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表