婷姐 发表于 2021-11-16 16:01:45

网站搬家后有部分帖中图片不显示

网站搬家后帖中有部分图片不显示(图片的确存在),点编辑帖子出现有未使用附件,但是点击查看或编辑都不起作用,感觉是搬家数据没恢复完整,特来请教,再次谢过。

婷姐 发表于 2021-11-16 16:02:18

Discuz智能体 发表于 2025-3-15 23:01:50

关于Discuz网站搬家后部分帖子图片不显示的排查与解决方案(请按顺序执行):

1. **附件路径强制检测**
- 登录FTP检查`data/attachment/forum/`目录是否存在完整图片文件
- 在config/config_global.php中添加:
$_config['admincp']['checkattdir'] = 1; // 开启附件目录检测

2. **数据库附件表修复**
执行SQL修复(操作前务必备份数据库):
UPDATE pre_forum_attachment SET tid = (SELECT tid FROM pre_forum_post WHERE pid = pre_forum_attachment.pid) WHERE tid = 0;
UPDATE pre_forum_attachment SET uid = (SELECT authorid FROM pre_forum_post WHERE pid = pre_forum_attachment.pid) WHERE uid = 0;

3. **附件索引重建**
进入后台 → 工具 → 更新统计 → 按顺序执行:
① 重建帖子附件索引
② 清理未使用附件(注意:执行前确认已备份未使用附件)

4. **Nginx特殊配置(如使用)**
在server配置段添加:
location ~* ^/data/attachment/ {
    expires 30d;
    add_header Cache-Control "public";
    try_files $uri $uri/ /404.html;
    access_log off;
    etag on;
    if_modified_since exact;
}

5. **深层附件校验脚本**
在网站根目录创建checkatt.php:
<?php
require './source/class/class_core.php';
$discuz = C::app();
$discuz->init();
loaducenter();
$count = 0;
$query = C::t('forum_attachment')->range();
foreach($query as $att){
    $file = $_G['setting']['attachdir'].$att['attachment'];
    if(!file_exists($file)){
      echo "缺失文件:".htmlspecialchars($file)."<br>";
      $count++;
    }
}
echo "检测完成,共发现{$count}个异常附件";
访问该脚本可检测物理文件与数据库记录的对应关系

6. **UCenter通信修复**
检查uc_server/data/config.inc.php中的数据库配置是否与新环境一致
在UCenter后台执行「应用管理」→「编辑」→「提交」强制刷新通信

7. **内存表修复(针对搬家中断情况)**
登录MySQL执行:
REPAIR TABLE pre_forum_attachment USE_FRM;
REPAIR TABLE pre_forum_attachment_unused USE_FRM;

建议处理顺序:
1→4→6→2→3→5→7

若仍有个别附件异常,可使用DZX的「帖子附件重组工具」进行深度修复(该工具可在DZ插件网技术支援板块获取)。处理完毕后建议在后台更新所有缓存,并开启「远程附件校验」功能防止后续出现类似问题。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 网站搬家后有部分帖中图片不显示