核心思路:搬家三部曲
DedeCMS搬家本质上就是三件事:

(图片来源网络,侵删)
- 文件搬家:把网站所有文件(
/dede目录除外)上传到新服务器。 - 数据库搬家:把旧网站的数据库导出,再导入到新服务器的数据库中。
- 信息修正:修改新网站中的配置文件,使其指向新的数据库和路径。
错误就发生在第三步,或者前两步没有做好导致的第三步失败。
第一步:检查最常见的错误(90%的问题出在这里)
这是最优先要检查的几个地方,能解决大部分问题。
修改 data/common.inc.php 文件
这是DedeCMS的核心配置文件,存放了数据库连接信息,搬家后必须修改它。
- 找到文件:通过FTP或文件管理器,进入网站的
/data/目录,找到common.inc.php文件。 - 下载并编辑:下载这个文件,用记事本或代码编辑器(如VS Code, Sublime Text)打开。
- 修改以下信息:
// 数据库连接信息 $cfg_dbhost = 'localhost'; // 数据库主机,通常是localhost,如果不是请填写你的数据库地址 $cfg_dbname = '你的新数据库名'; // 你在新服务器上创建的数据库名 $cfg_dbuser = '你的新数据库用户名'; // 新数据库的用户名 $cfg_dbpwd = '你的新数据库密码'; // 新数据库的密码 $cfg_dbprefix = 'dede_'; // 数据库表前缀,如果和旧站不同,需要在这里修改,并且要确保数据库导入时也做了相应处理 $cfg_admindir = 'dede'; // 后台管理目录名,如果你改动了,这里要同步修改
- 保存并上传:修改后保存,再通过FTP上传回服务器的
/data/目录,覆盖原文件。
修改 /dede/ 目录下的配置文件
仅仅修改 data/common.inc.php 是不够的,后台目录的配置也需要更新。

(图片来源网络,侵删)
- 找到文件:进入
/dede/目录。 - 检查文件:
config_update.php:里面也可能包含数据库配置,检查并更新。index.php:在后台登录页面,有时也需要检查数据库连接信息,但通常common.inc.php够用了。
- 修改方法:同上,下载、编辑、上传。
修改网站根目录下的 index.php 文件
这个文件是网站首页的入口,它也可能包含硬编码的路径信息。
- 找到文件:网站根目录(
public_html或www目录)下的index.php。 - 检查代码:打开文件,找到类似这样的代码:
require_once (dirname(__FILE__) . "/include/common.inc.php");
这行代码通常是正确的,因为它使用了
dirname(__FILE__)来自动获取当前文件所在的目录,但如果你的旧站有特殊修改,这里可能需要调整。 - 重点检查:确保
include/common.inc.php这个路径是正确的,在标准DedeCMS结构中,它应该是正确的。
第二步:如果第一步无效,进行深度排查
如果修改了核心配置文件后问题依旧,那么问题可能出在以下几个方面。
检查目录权限
这是导致“500 Internal Server Error”或“无法写入”等错误的常见原因,搬家后,新服务器的目录权限可能与旧服务器不同。
- 需要设置权限的目录:
/data/:必须可写(755或777,777风险较高,先试755)。/uploads/:必须可写(755或777)。/templets/:如果开启了模板缓存,需要可写(755)。/special/:专题目录,需要可写(755)。/html/:生成静态文件的目录,需要可写(755)。/a/目录,需要可写(755)。
- 如何设置:
- 通过FTP软件:右键点击目录 -> “文件权限” -> 输入
755。 - 通过Linux命令行(SSH登录服务器):
chmod -R 755 /path/to/your/dede/dir/data。
- 通过FTP软件:右键点击目录 -> “文件权限” -> 输入
检查 .htaccess 文件
如果你的网站使用Apache服务器,根目录下的 .htaccess 文件可能包含旧服务器的路径信息。
- 找到文件:网站根目录下的
.htaccess。 - :查看里面是否有类似
RewriteBase /old_site_path/这样的行,如果有,修改为新的路径,RewriteBase /。 - 如果网站使用Nginx:则检查
nginx.conf或虚拟主机配置文件,看是否有包含旧路径的rewrite规则。
检查PHP版本和扩展
新旧服务器的PHP版本或开启的扩展可能不同,导致某些函数不兼容。
- 检查PHP版本:在网站根目录创建一个
info.php文件,内容为<?php phpinfo(); ?>,然后在浏览器访问它,查看PHP版本是否与旧站一致(建议使用7.x版本,避免使用8.0以上版本,可能会有兼容性问题)。 - 检查关键扩展:确保以下PHP扩展已开启:
mysqli或mysql(Dede主要使用mysqli)gd(处理图片)curl(远程请求)zip(压缩)
数据库前缀问题
如果你在搬家时修改了数据库表前缀,或者新服务器的数据库前缀与旧站不同,除了修改 common.inc.php,你还需要确保数据库里的所有表名都已更新。
- 检查方法:登录你的新数据库管理工具(如phpMyAdmin),查看表前缀是否和你
common.inc.php里设置的一致。 - 修正方法:如果不一致,需要手动修改所有表的名称,或者在导入数据库前就使用
sed命令或在phpMyAdmin中批量替换前缀。
第三步:使用DedeCMS自带的“系统基本参数”进行修正
数据库里的一些系统参数也需要更新。
- 登录你的DedeCMS后台:
http://你的新域名/dede/ - 进入“系统” -> “系统基本参数”。
- 在左侧菜单选择“核心设置”。
- 检查并修改以下几项,确保它们指向新的域名和路径:
- 网站主页:
http://你的新域名/ - 网站根目录:
/home/你的用户名/public_html/(填写你的网站在服务器上的绝对路径) - CMS安装目录: (如果你的网站就在根目录)
- 附件目录:
/uploads/
- 网站主页:
- 保存后,建议去“系统” -> “一键更新网站” -> “更新主页HTML”,看看首页是否能正常生成。
第四步:终极解决方案——使用官方搬家工具
DedeCMS官方提供了一个专门用于搬家的SQL文件,可以自动化地修正数据库中的大部分路径问题。
- 下载工具:访问DedeCMS官网或相关资源站,下载“DedeCMS搬家修正工具”,通常是一个SQL文件。
- 执行SQL:
- 登录你的新服务器数据库管理工具(phpMyAdmin)。
- 选择你的数据库。
- 点击“导入”选项卡。
- 选择你下载的搬家SQL文件,然后执行。
- 工具作用:这个SQL文件会批量更新数据库中所有包含旧域名和旧路径的记录,将其替换为新的信息,这比手动一个个修改要高效和准确得多。
总结与排查清单
如果遇到问题,请按以下清单逐一排查:
- [ ] 核心配置:确认
/data/common.inc.php中的数据库信息100%正确。 - [ ] 目录权限:确认
/data,/uploads,/html等关键目录权限为 755。 - [ ]
.htaccess文件:检查并修正其中的路径规则。 - [ ] 数据库前缀:确认数据库表前缀与配置文件中的一致。
- [ ] 系统参数:登录后台,检查“系统基本参数”中的网站路径和域名。
- [ ] 执行SQL**:运行官方的“搬家修正工具”SQL文件。
- [ ] PHP环境**:检查PHP版本和所需扩展是否正常。
按照这个流程,99%的DedeCMS搬家问题都可以得到解决,如果问题依旧存在,请提供具体的错误提示信息,这样我们可以更精准地定位问题。
