第一步:检查最常见的原因 - 文件权限问题
这是导致图片不显示的首要元凶,尤其是在Linux服务器环境下。

检查上传目录的权限
DedeCMS默认会将上传的图片存放在 /uploads/ 目录及其子目录中,这个目录及其子目录必须拥有正确的写入权限。
-
推荐权限:
755或750 -
检查方法:
- 通过FTP工具连接服务器,右键点击
uploads文件夹,查看属性/权限。 - 通过SSH连接服务器,在网站根目录下执行
ls -ld uploads命令。
- 通过FTP工具连接服务器,右键点击
-
修改方法:
(图片来源网络,侵删)-
通过FTP工具: 直接在FTP软件中修改权限,将所有者设为
www-data(或你的Web服务器运行用户,如nginx,apache),组也设为www-data,并勾选所有者“读、写、执行”,组和其他用户“读、执行”。 -
通过SSH命令(推荐):
# 进入网站根目录 cd /path/to/your/website # 设置uploads目录及其所有子目录和文件的权限 # chown -R www-data:www-data uploads (设置所有者和组) # chmod -R 755 uploads (设置目录权限) # 如果你的Web用户是apache,则用apache chown -R www-data:www-data uploads chmod -R 755 uploads
-
检查图片文件的权限
上传成功后生成的图片文件,其权限也需要正确。
-
推荐权限:
644
(图片来源网络,侵删) -
修改方法(SSH):
# 进入uploads目录 cd /path/to/your/website/uploads # 递归设置所有文件权限为644 find . -type f -exec chmod 644 {} \;
第二步:检查服务器配置和软件问题
如果权限没问题,那么很可能是服务器端的配置问题。
检查Web服务器(Nginx/Apache)的配置
特别是Nginx,对目录的访问权限有严格要求。
-
Nginx配置检查: 确保你的Nginx虚拟主机配置中,对
uploads目录有正确的访问权限,通常需要添加以下配置:server { # ... 其他配置 ... root /path/to/your/website; # 关键部分:允许uploads目录及其子目录下的文件被访问 location ~ ^/uploads/ { expires 30d; add_header Cache-Control public; } # ... 其他配置 ... }修改完Nginx配置后,务必执行
nginx -s reload命令重新加载配置。 -
Apache配置检查: Apache通常比较宽松,但如果使用了
.htaccess文件,确保它没有错误地阻止了对uploads目录的访问。
检查PHP运行用户(User)
确保PHP的运行用户(如 www-data)是 uploads 目录的所有者,如果所有者是 root,那么PHP进程是无法写入文件的。
- 解决方法: 参考第一步的
chown命令,将目录所有者修改为Web服务器运行用户。
检查安全软件(如宝塔面板、安全狗等)
如果你使用了宝塔面板等服务器管理软件,或者安装了安全狗,它们可能会将图片上传行为误判为攻击并拦截。
- 解决方法:
- 登录宝塔面板,检查“安全”或“防火墙”设置,看看是否有拦截规则。
- 暂时关闭安全狗等软件,再尝试上传,如果恢复正常,说明是软件拦截,需要在其白名单中添加你的网站目录。
第三步:检查DedeCMS系统自身设置
如果服务器端没问题,那么就要从DedeCMS系统内部找了。
检查“附件设置”
这是最核心的DedeCMS配置之一。
-
路径设置:
- 登录DedeCMS后台。
- 进入【系统】->【系统基本参数】->【附件设置】。
- 检查以下几项是否正确:
附件保存目录相对路径:通常是uploads。附件目录保存在网站根目录下:确保这个选项的勾选与你的实际路径一致,如果勾选了,DedeCMS会在网站根目录下创建目录;如果没有勾选,则会使用DedeCMS安装目录下的路径。(必须填写)附件保存路径:系统会根据上面的设置自动生成,确保它指向了正确的服务器路径,/home/wwwroot/yourdomain/uploads。
-
目录默认创建规则:这个选项决定了子目录的命名方式,如按年、按月等,通常保持默认即可。
检查“图片文档主表”和“图片副表”
图片信息存储在 dede_archives (主表) 和 dede_addonarticle (副表,如果开启了文章模型) 中,图片路径存储在 body 字段里。
- 检查路径是否正确:
- 登录你的网站数据库(如phpMyAdmin)。
- 找到你的DedeCMS数据库。
- 进入
dede_archives表,找到一篇你上传了图片但未显示的文章,查看litpic字段(缩略图)和body字段(内容)。 - 检查
body字段中的图片路径,<img src="/uploads/2025/10/xx.jpg" ...>。 - 关键点: 这个路径必须是相对于网站根目录的,并且是可以通过浏览器直接访问的。
检查“目录默认创建规则”
- 路径: 【系统】->【系统基本参数】->【附件设置】->
目录默认创建规则。 - 问题: 如果你的服务器不支持或配置有误,而DedeCMS又设置了复杂的目录规则(如
/{y}/{m}/{d}),可能导致目录创建失败。 - 解决方法: 可以暂时将其修改为简单的规则,
/{year}{month}或直接uploads,看看问题是否解决。
第四步:检查浏览器和缓存问题
清除浏览器缓存
浏览器缓存了旧的、损坏的页面或图片链接。
- 解决方法: 按
Ctrl + F5强制刷新页面,或者使用浏览器的“清除缓存”功能。
检查图片链接是否可访问
这是一个非常直接的排查方法。
- 操作:
- 在后台文章编辑器中,右键点击那张不显示的图片。
- 选择“复制图片地址”。
- 将这个地址粘贴到浏览器的新标签页中,按回车。
- 结果分析:
- 图片正常显示: 说明图片文件本身是好的,问题出在页面的HTML渲染或CSS样式上,检查是否有CSS代码(如
display: none;或max-width: 0;)隐藏了图片。 - 浏览器报错(如404 Not Found): 这说明路径是错的!图片文件没有上传到指定位置,或者路径配置错误,请重点回顾第三步。
- 浏览器报错(如403 Forbidden): 这说明权限问题!服务器禁止访问这个文件,请重点回顾第一步和第二步。
- 图片正常显示: 说明图片文件本身是好的,问题出在页面的HTML渲染或CSS样式上,检查是否有CSS代码(如
总结与排查流程
遇到“DedeCMS上传图片不显示”的问题,请按照以下流程进行排查,可以高效地定位问题:
- 【最优先】 检查
uploads目录及其子目录、文件的权限(755/644)和所有者(www-data)。 - 【验证】 复制图片链接到浏览器,看是否能直接访问,根据404/403等错误码判断方向。
- 【服务器】 检查Nginx/Apache配置,特别是对
uploads目录的访问规则,检查宝塔等安全软件是否拦截。 - 【系统】 进入后台【系统基本参数】->【附件设置】,核对所有路径配置是否正确。
- 【数据库】 直接查询数据库,确认
body字段中的图片路径是否正确且可访问。 - 【 尝试清除浏览器缓存,或换个浏览器测试。
按照这个流程,90%以上的问题都能得到解决,如果以上所有方法都尝试过仍然无效,那么可能是服务器环境或DedeCMS版本本身存在更深层的问题,可以考虑在DedeCMS官方论坛或相关技术社区寻求更具体的帮助。
