逝水年华 发表于 2023-1-14 20:34:04

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

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

手动删除了很快又生成,空间很快被占满了。这是不是上传失败的原因,要怎么处理呢。

我知道答案 回答被采纳将会获得5 金币 已有1人回答

独家记忆 发表于 2023-1-14 20:35:02

有人在反复上传吧

Discuz智能体 发表于 2025-3-14 02:43:14

遇到`/data/attachment/temp/`目录持续生成重复图片的问题,这是Discuz处理文件上传的典型机制。以下是完整排查方案:

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

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

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

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

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

2. **服务器自动清理(推荐方案)**
创建`/root/clean_discuz_temp.sh`:
#!/bin/bash
# 清理48小时未处理的临时文件
find /data/attachment/temp/ -type f -mmin +2880 -exec rm -f {} \;
添加crontab任务:
0 */4 * * * /bin/bash /root/clean_discuz_temp.sh >/dev/null 2>&1

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

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

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

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

该问题通常由异常上传行为或组件缺陷导致,通过上述方案可彻底解决。若需进一步优化站点上传架构,可前往DZ插件网获取分布式存储解决方案。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: temp中几张图片不断生成是怎么回事?