找回密码
 立即注册
搜索

discuz 发布日志 无法上传图片教程

已有 39 次阅读2026-4-7 08:01 技术类

 

Discuz(或 Discuz! X)在发布日志(日志/日记模块)时上传图片失败的问题,这是比较常见的,原因主要有以下几种,我按概率从高到低给你列出解决步骤。

1. 最常见原因:日志功能未同时开启相册(推荐先试这个)

Discuz 有一个小 bug/特性:即使开启了日志功能,如果没开启相册,日志里就无法上传图片

解决方法

  • 登录后台 → 全局站点功能(或 功能模块)。
  • 相册 功能 开启
  • 保存后,点击 工具更新缓存(全部缓存都更新一遍)。
  • 返回前台测试日志上传图片。

这个方案在很多用户反馈中直接解决了日志专属的上传问题(论坛帖子能传,但日志不行)。

2. 附件目录权限问题(最普遍的上传失败原因)

日志/门户/帖子上传图片都依赖 data/attachment/ 目录。

检查与修复

  • Linux 服务器:把 ./data/./data/attachment/ 目录权限设置为 777(或 755 + 文件夹可写)。
  • Windows 服务器:给 data/attachment/ 目录添加 EveryoneIIS_USRS读取 + 写入 权限。
  • 同时检查 ./data/temp/ 或系统临时目录(php.ini 中的 upload_tmp_dir)是否有写权限。

权限不对的话,通常会提示“附件文件无法保存”或直接失败。修改后更新缓存再试。

3. PHP 配置限制(大小、临时目录等问题)

  • 上传大小限制:图片太大时会失败。
    • 修改 php.ini
      text
      upload_max_filesize = 50M     ; 改大一点
      post_max_size = 50M
      memory_limit = 256M           ; 高分辨率图片可能需要更多内存
      max_execution_time = 300
      • 重启 PHP/FPM 或 Web 服务器(Nginx/Apache/IIS)。
    • 临时目录权限:确保 upload_tmp_dir 指定的目录(默认 /tmp 或 C:\Windows\Temp)可写,特别是 Windows + IIS 环境。

    4. 其他常见问题及快速排查

    • 图片本身问题:试试换一张小图片(<2MB,分辨率别太高如 3000px 以内)。有时候高分辨率图片会导致 GD 库内存不足而失败。
    • 用户组权限:后台 → 用户用户组,确认当前用户组有“允许上传图片/附件”权限。
    • H5 上传 vs Flash:新版 Discuz 已切换到 HTML5 上传,如果上传按钮消失或失败,可能是旧 Flash 残留,建议更新相关 JS 文件或保持最新版本。
    • 上传后显示“Cancelled”或成功但不显示:图片其实已上传到 data/attachment/,但前端插入失败。多见于门户文章/日志,检查栏目设置或再更新缓存。
    • 服务器空间/磁盘满:检查硬盘剩余空间。
    • Nginx/Apache 配置:确认没有客户端最大 body 大小限制(client_max_body_size)。

    排查建议顺序

    1. 先开启相册功能 + 更新缓存(最快)。
    2. 检查 data/attachment/ 权限。
    3. 查看服务器错误日志(PHP error_log 或 Discuz 的 data/log/ 文件),看具体报错信息(比如 500、IO 错误、Cancelled 等)。
    4. 压缩图片再试,或换个浏览器/无痕模式测试。

    如果你试完以上还是不行,请告诉我:

    • Discuz 具体版本(X3.4 / X3.5 等)
    • 服务器环境(Linux + Nginx/Apache,还是 Windows + IIS)
    • 报错的具体提示文字(是“上传失败”“附件无法保存”“Cancelled”还是空白?)
    • 是否只有日志不能传,帖子/门户能不能传?