第一步:清除缓存(最常见的原因)
DedeCMS为了提高速度,会缓存很多数据,包括菜单信息,缓存文件损坏或过期就可能导致菜单不显示。

(图片来源网络,侵删)
- 登录FTP或主机文件管理器,进入您的网站根目录。
- 找到并删除以下两个缓存文件夹:
/data/cache//data/tplcache/
- 重要:不要直接删除整个
/data目录,只需删除里面的cache和tplcache文件夹即可,如果删除不了,可能是权限问题,您需要在服务器控制面板中修改这两个文件夹的权限为777,删除后再改回原权限(如755)。 - 删除完成后,重新登录DedeCMS后台,看左侧菜单是否恢复。
第二步:检查管理员权限
如果清除缓存无效,可能是当前登录的管理员账户权限丢失或被篡改。
- 登录数据库:使用phpMyAdmin或其他数据库管理工具登录您的网站数据库。
- 找到数据表:找到
dede_admin(管理员表)和dede_arctype(栏目表,有时权限问题也与此相关)。 - 检查管理员信息:
- 在
dede_admin表中,找到您当前登录的管理员账户记录。 - 检查
usertype字段是否为管理员。 - 检查
rank字段是否为0或10(超级管理员通常为10)。 - 检查
mtype字段是否为管理员。
- 在
- 检查权限字段:
- 在
dede_admin表中,检查purviews字段,对于超级管理员,这个字段通常是一个空字符串 或者包含特定权限的字符串,如果它被意外修改或清空,可能会导致权限问题,您可以尝试将其设置为空字符串。 - 在
dede_arctype表中,检查topid字段,确保顶级栏目的topid为0,这关系到菜单的层级结构。
- 在
第三步:检查数据库表前缀
如果您在安装DedeCMS时修改了默认的数据表前缀(默认是 dede_),那么系统可能无法正确找到对应的表。
- 检查配置文件:打开网站根目录下的
/data/common.inc.php文件。 - 查看前缀配置:找到
$cfg_dbprefix = '这里是你设置的前缀';这一行,确认您的前缀是什么。 - 核对数据库:登录phpMyAdmin,检查您数据库中的表名是否与
common.inc.php中设置的前缀一致,如果配置文件中是mycms_,那么数据库里就应该是mycms_admin,mycms_arctype等,如果不一致,需要修改配置文件以匹配数据库,或者反之。
第四步:检查核心文件是否损坏
有时,服务器上的文件传输错误或权限问题可能导致核心文件损坏。
- 比对文件:下载一个与您网站DedeCMS版本完全相同的、干净的原版程序包。
- 覆盖关键文件:用原版程序包中的以下文件,覆盖您网站服务器上对应的文件(覆盖前最好先备份原文件):
/dede/目录下的所有PHP文件(特别是index.php,config.php,templets/index_body.htm等)。/include/目录下的核心文件,如common.inc.php,login.php等。
- 注意权限:确保覆盖后的文件权限设置正确(通常是
644),目录权限是755。
第五步:检查模板文件
后台首页的模板文件如果损坏,也会导致页面布局错乱,菜单不显示。

(图片来源网络,侵删)
- 找到模板文件:后台首页的模板文件通常位于
/dede/templets/index_body.htm。 - :用文本编辑器打开这个文件,检查其内容是否完整,特别是调用菜单的代码部分是否被意外删除或修改,可以与一个干净的原版程序包中的同名文件进行对比。
第六步:检查PHP版本和函数兼容性
如果您最近升级了PHP服务器版本,可能会遇到一些不兼容的函数,导致程序报错但页面只显示空白。
- 查看错误日志:检查服务器的错误日志(通常在
cPanel的 "Error Log" 里,或者在/var/log/apache2/error.log等位置),可能会有具体的错误信息。 - 常见问题:高版本的PHP(如PHP 8.0+)可能会废弃一些旧函数。
mysql_connect等函数在PHP 7.0以后就被移除了,DedeCMS旧版本可能不兼容。- 解决方案:联系您的服务器提供商,将PHP版本降级到一个DedeCMS官方推荐的稳定版本(如 PHP 5.6, 7.0, 7.1)。
第七步:终极解决方案 - 重建管理员账户
如果以上方法都无效,可能是管理员账户数据严重损坏,最直接的办法就是创建一个新的超级管理员账户。
-
登录数据库。
-
找到管理员表:
dede_admin(或您自定义前缀的管理员表)。
(图片来源网络,侵删) -
插入新管理员:执行以下SQL语句(请务必将
your_password替换为您想设置的密码,your_username替换为您想用的用户名)。INSERT INTO `dede_admin` (`id`, `usertype`, `typeid`, `rank`, `mtype`, `userid`, `pwd`, `uname`, `tname`, `email`, `sex`, `logintime`, `loginip`, `safequestion`, `safeanswer`, `dede_logintime`) VALUES (2, '管理员', 0, 10, '管理员', 'your_username', '新密码的MD5值', '新管理员姓名', '', 'your_email@example.com', '男', 0, '', 0, '', 0);
-
获取MD5密码:您可以使用在线MD5加密工具,将您设置的密码(
123456)进行MD5加密,得到一串32位的字符串(e10adc3949ba59abbe56e057f20f883e),然后将这串字符串替换掉SQL语句中的'新密码的MD5值'。 -
登录:执行完SQL后,您就可以用新创建的用户名和密码登录后台了,登录成功后,您可以根据需要删除旧的、损坏的管理员账户。
总结排查顺序建议
- 先清缓存(成功率最高)。
- 再检查 数据库权限 和 表前缀。
- 然后考虑 覆盖核心文件。
- 最后尝试 重建管理员账户。
希望这些步骤能帮助您解决问题!
