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

temp中几张图片不断生成是怎么回事?

426 2
发表于 2023-1-14 20:34:04 | 查看全部 阅读模式

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

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

×
/data/attachment/temp/中不停的生成几张相同的图片,见下图:

手动删除了很快又生成,空间很快被占满了。这是不是上传失败的原因,要怎么处理呢。
temp中几张图片不断生成是怎么回事? temp,图片,不断,生成,怎么
我知道答案 回答被采纳将会获得5 金币 已有1人回答
我要说一句 收起回复

评论2

独家记忆Lv.8 发表于 2023-1-14 20:35:02 | 查看全部
有人在反复上传吧
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-14 02:43:14 | 查看全部
遇到`/data/attachment/temp/`目录持续生成重复图片的问题,这是Discuz处理文件上传的典型机制。以下是完整排查方案:

**一、问题根源分析**
1. 临时文件机制:Discuz默认将上传文件先写入temp目录,成功转存到正式目录后会自动清理。若出现循环生成,意味着存在以下情况:
- 用户反复提交未完成的附件
- 插件/模板未调用`dcommit()`方法提交附件
- PHP进程对temp目录无删除权限
- 存在恶意爬虫或采集器频繁触发上传接口

**二、技术排查步骤**
1. **日志交叉分析**
  1. # 查看最近1小时的上传请求(替换为实际路径)
  2. tail -n 500 /www/wwwlogs/nginx_access.log | grep 'forum.php?mod=ajax&action=upload'
  3. grep 'move_uploaded_file' /www/wwwlogs/php_errors.log
复制代码


2. **权限验证**
  1. # 查看目录属组(www用户需有写删权限)
  2. ls -ld /data/attachment/temp/
  3. chown -R www:www /data/attachment/temp
  4. chmod -R 755 /data/attachment/temp
复制代码


3. **进程级监控(Linux环境)**
  1. # 实时追踪文件创建行为
  2. inotifywait -m /data/attachment/temp -e create | while read path action file; do
  3.   echo "文件被创建:$file 时间:$(date '+%Y-%m-%d %H:%M:%S')"
  4.   lsof | grep "/data/attachment/temp/$file"
  5. done
复制代码


**三、解决方案**
1. **核心代码修复**
打开`source/class/class_upload.php`,在`save()`方法末尾追加:
  1. if($this->attach['target']) {
  2.     @unlink($this->attach['tmp_name']);
  3. }
复制代码


2. **服务器自动清理(推荐方案)**
创建`/root/clean_discuz_temp.sh`:
  1. #!/bin/bash
  2. # 清理48小时未处理的临时文件
  3. find /data/attachment/temp/ -type f -mmin +2880 -exec rm -f {} \;
复制代码

添加crontab任务:
  1. 0 */4 * * * /bin/bash /root/clean_discuz_temp.sh >/dev/null 2>&1
复制代码


3. **防御性配置**
在`config/config_global.php`追加:
  1. // 限制同一IP上传频率
  2. $_config['security']['uploadfrequency'] = 10; // 10次/分钟
复制代码


4. **插件冲突检测**
临时重命名插件目录测试:
  1. mv ./source/plugin ./source/plugin.bak
  2. # 观察1小时后若问题消失,则逐个插件恢复排查
复制代码


**四、高级优化方案**
对高频访问站点,建议修改附件存储逻辑:
1. 在`config/config_global.php`中配置独立OSS存储:
  1. $_config['extend']['storage']['curstorage'] = 'oss';
  2. $_config['extend']['storage']['oss']['bucket'] = 'yourbucket';
  3. $_config['extend']['storage']['oss']['endpoint'] = 'oss-cn-hangzhou.aliyuncs.com';
复制代码


2. 在DZ插件网(www.dz-x.net)搜索"OSS直传插件",采用前端直传方案绕过本地temp目录

该问题通常由异常上传行为或组件缺陷导致,通过上述方案可彻底解决。若需进一步优化站点上传架构,可前往DZ插件网获取分布式存储解决方案。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

关闭

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

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:18.221.53.37,GMT+8, 2025-4-18 16:59 , Processed in 0.452342 second(s), 78 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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