第一步:基础检查(90%的问题出在这里)
这是最常见的原因,请务必仔细检查。

(图片来源网络,侵删)
检查上传目录权限
这是最最最常见的原因,DedeCMS需要拥有对特定目录的写入权限,才能保存你上传的图片。
-
需要设置权限的目录:
/uploads/(主上传目录)/uploads/allimg/(文章图片默认目录)/uploads/editor/(编辑器图片默认目录)/uploads/default/(默认图片目录)- 以及
/uploads/下的其他子目录。
-
如何设置权限:
- 通过FTP软件: 连接到你的服务器,右键点击这些目录,选择“文件权限”(File Permissions) 或“属性”(Properties)。
- 通过Linux命令行 (SSH): 登录服务器,执行以下命令:
chmod -R 755 /path/to/your/dede/uploads/ chown -R www:www /path/to/your/dede/uploads/
chmod 755是最常用且安全的目录权限设置。chown www:www将目录的所有者更改为Web服务器运行的用户(通常是www,nginx,apache等,具体取决于你的服务器环境),这一步非常重要,很多虚拟主机用户会忽略。
检查服务器空间是否已满
登录你的FTP或主机控制面板,检查网站根目录的磁盘使用量,如果空间已用完100%,自然无法上传任何新文件。

(图片来源网络,侵删)
检查上传目录的.htaccess文件
有时,为了安全,服务器会通过.htaccess文件限制上传目录的执行权限,但这可能会影响DedeCMS的上传脚本。
- 检查位置: 进入
/uploads/目录,查看是否存在.htaccess文件。 - 如果文件中包含类似
php_flag engine off或Deny from all的指令,它可能会阻止PHP脚本的执行。 - 解决方案:
- 临时方案: 将这个
.htaccess文件重命名(例如改为.htaccess.bak),然后尝试上传。 - 正确方案: 修改
.htaccess文件,允许DedeCMS的上传脚本(通常是uploadsafe.php)执行,一个安全的.htaccess内容示例:# 防止执行上传目录下的PHP文件,但允许DedeCMS的上传脚本 <Files ~ "\.(php|php3|php4|php5|phtml)$"> Order Deny,Allow Deny from all </Files> # 允许DedeCMS的上传脚本执行 <Files "uploadsafe.php"> Order Allow,Deny Allow from all </Files>如果你不确定如何修改,可以先重命名测试。
- 临时方案: 将这个
第二步:浏览器与JS问题
如果基础检查没问题,但上传按钮点击后毫无反应(没有弹出窗口,没有网络请求),可能是浏览器或JavaScript的问题。
清除浏览器缓存和Cookie
浏览器缓存的旧JS文件可能会导致功能异常,尝试清除缓存后刷新页面重试。

(图片来源网络,侵删)
检查浏览器控制台
这是排查前端问题的利器。
- 打开开发者工具: 按
F12键,切换到 “Console” (控制台) 标签页。 - 尝试上传: 再次点击上传按钮。
- 观察错误信息: 查看控制台是否有红色的错误提示,常见的错误有:
404 (Not Found): 某个JS或CSS文件找不到。SyntaxError: JavaScript语法错误,通常是插件冲突或文件损坏。Blocked a frame with origin...: 跨域问题,通常与服务器配置有关。- 没有任何错误,但上传函数没有被触发。
检查JavaScript文件是否正确加载
- 检查源码: 在浏览器中,右键点击页面 -> “检查” -> 切换到 “Elements” (元素) 标签。
- 查找JS引用: 搜索
dede或kindeditor(DedeCMS常用编辑器) 相关的JS文件,看路径是否正确,文件是否能正常访问。 - 尝试禁用插件: 如果安装了浏览器插件(如广告拦截器、脚本管理器),尝试禁用它们,因为它们可能会阻止DedeCMS的上传脚本运行。
切换编辑器
DedeCMS支持多种编辑器(如默认编辑器、KindEditor、百度UEditor等)。
- 进入后台:
系统->系统基本参数->核心设置。 - 修改编辑器: 找到 “
默认的编辑器” 选项,尝试切换到另一个编辑器(比如从KindEditor切换到Default),然后保存并重新进入文章编辑页面测试。
第三步:服务器与PHP环境问题
如果以上都无效,问题可能出在服务器端。
检查PHP上传相关配置
服务器的 php.ini 文件限制了上传功能。
- 找到php.ini文件: 通常在
/etc/php.ini或/usr/local/php/etc/php.ini,如果你不确定,可以创建一个phpinfo.php文件,内容为<?php phpinfo(); ?>,上传到网站根目录访问,查找 "Loaded Configuration File"。 - 检查并修改以下配置项:
file_uploads = On(确保开启文件上传)upload_max_filesize = 16M(单个文件上传限制,根据需要调整)post_max_size = 32M(POST数据总大小限制,必须大于等于upload_max_filesize)memory_limit = 128M(PHP内存限制)max_execution_time = 300(脚本最大执行时间,单位秒)
- 修改后: 重启你的Web服务器(Apache/Nginx)和PHP-FPM服务。
检查安全软件或防火墙
服务器上的安全软件(如安全狗、云锁)或防火墙规则可能会拦截 uploadsafe.php 这个关键的上传处理脚本。
- 临时测试: 尝试将
uploadsafe.php文件重命名,看看是否会报错,如果报错提示找不到文件,说明脚本本身可能被拦截了。 - 检查日志: 查看安全软件或服务器的访问/错误日志,看是否有相关的拦截记录。
- 白名单: 将
uploadsafe.php和/uploads/目录添加到安全软件的白名单中。
检查DedeCMS核心文件
include/dedesql.class.php和include/uploadsafe.inc.php是处理上传的核心文件。- 检查文件完整性: 确保这些文件存在且没有被意外修改或删除,你可以从DedeCMS官网下载一个对应版本的完整包,用里面的文件覆盖你的网站文件(注意:覆盖前务必备份!)。
第四步:DedeCMS版本与兼容性问题
升级或降级DedeCMS
你使用的DedeCMS版本可能存在已知的上传Bug,尝试升级到最新的稳定版,或者如果新版有问题,可以尝试回退到一个公认比较稳定的旧版(如V5.7)。
检查模板文件
- 切换回默认模板: 登录后台,
系统->系统基本参数->默认模板风格,切换回default。 - 清除模板缓存:
系统->SQL命令行工具,执行DELETE FROMdede_tpcacheWHEREmd5urlLIKE '%article%'来清除文章模板缓存。 - 有时候自定义模板的JS调用错误也会导致上传功能失效。
总结与排查顺序
建议你按照以下顺序进行排查,这能最高效地定位问题:
- 检查
/uploads/目录权限(755)和所有者(www)。 (90%的几率解决) - 检查服务器空间是否已满。
- 清除浏览器缓存,按F12查看控制台是否有JS错误。
- 后台切换编辑器,看是否是编辑器本身的问题。
- 检查服务器
php.ini的上传配置。 - 检查是否有安全软件拦截了
uploadsafe.php。 - 最后才考虑升级或重装DedeCMS。
如果所有步骤都尝试过问题依旧,请提供更多信息,
- 你使用的DedeCMS版本是多少?
- 服务器环境是什么(Linux/Windows, Apache/Nginx)?
- 浏览器控制台(F12)里有没有任何错误信息?
- 上传按钮是完全没反应,还是点了之后页面刷新/报错?
这些信息能帮助你更精确地定位问题。
