第一步:检查最核心的配置文件
这是90%以上搬家问题的根源,织梦的核心配置文件是 data/common.inc.php。
-
找到并下载
data/common.inc.php文件。- 这个文件通常位于你的网站根目录下的
data文件夹里。
- 这个文件通常位于你的网站根目录下的
-
检查并修改以下关键配置:
-
数据库连接信息:这是最需要检查的地方,打开文件,找到类似下面的代码,并确保你的新服务器信息完全正确。
//数据库连接信息 $cfg_dbhost = 'localhost'; // 数据库主机,通常是 localhost,如果不是,请填写你的数据库地址 $cfg_dbname = '你的数据库名'; // 你在新服务器上创建的数据库名 $cfg_dbuser = '你的数据库用户名'; // 你在新服务器上的数据库用户名 $cfg_dbpwd = '你的数据库密码'; // 你在新服务器上的数据库密码 $cfg_dbprefix = 'dede_'; // 数据库表前缀,确保和旧服务器上的一样,如果改了,这里也要改
特别注意:
-
$cfg_dbhost:有些虚拟主机或云服务器不使用localhost,而是提供一个具体的数据库IP地址或域名,请务必从你的新服务器服务商那里获取正确的值。 -
数据库名、用户名、密码:这些是你在新服务器上创建数据库和用户时填写的,必须完全匹配。
-
$cfg_dbprefix:如果你在搬家时修改了表前缀,这里必须同步修改,如果没改,就保持和原来一样。 -
网站根目录路径:织梦需要知道它安装在服务器的哪个位置,检查下面这个变量是否正确。
$cfg_cmspath = '/你的网站根目录'; // /home/wwwroot/yourdomain.com 或 /public_html
如何获取正确路径?
-
通过FTP/SFTP登录:登录你的新服务器,查看你当前所在的文件夹路径,通常就是网站的根目录。
-
通过服务器控制面板:如 cPanel、宝塔面板等,在文件管理器里可以看到当前路径。
-
通过PHP探针:如果你有安装PHP探针(如phpinfo.php),它通常会显示
DOCUMENT_ROOT,这就是你的网站根目录。 -
网站URL:确保网站地址指向了新的域名。
$cfg_basehost = 'http://www.yourdomain.com'; // 你的新网站域名,请包含 http:// 或 https:// $cfg_indexurl = 'http://www.yourdomain.com/';
-
-
保存并上传:修改完毕后,保存文件,并通过FTP/SFTP重新上传到服务器的
/data/目录下,覆盖原文件。
第二步:检查文件和目录权限
织梦在更新、生成HTML、上传附件等操作时,需要写入服务器上的文件和目录,如果权限不正确,就会失败。
-
通过FTP/SFTP连接服务器。
-
设置以下目录和文件的权限为 755 或 777(如果755不行,可以尝试777,但777有安全风险,操作后记得改回755)。
- 整个网站根目录
/data/目录(非常重要!)/templets/目录/uploads/目录/special/目录/html/目录/a/目录/plus/目录/include/目录/static/目录- 以及这些目录下的所有子目录和文件。
宝塔面板用户:可以在“文件”管理器中右键点击目录,选择“权限”,然后输入数字即可。 Linux命令行用户:可以使用
chmod -R 755 目录名命令。
第三步:检查数据库
如果你只是把程序文件传了过去,但没有把旧服务器的数据库导入到新服务器,那网站是无法运行的。
- 确认数据库已导入:登录你的新服务器数据库管理工具(如phpMyAdmin),确认你之前导出的数据库文件已经成功导入,并且里面的数据是完整的。
- 检查数据表前缀:在phpMyAdmin中,浏览你的数据库,确认所有数据表的前缀(如
dede_archives,dede_arctype)和你修改的$cfg_dbprefix是否一致,如果不一致,要么修改配置文件,要么重新导入一个已经修改过前缀的数据库备份。
第四步:检查服务器环境差异
新旧服务器的PHP版本、函数支持、安全设置(如open_basedir、safe_mode)不同,也会导致问题。
- PHP版本:检查旧服务器和新服务器的PHP版本是否一致,如果旧服务器是PHP 7.0,新服务器是PHP 8.0,可能会有不兼容的函数。
- 禁用函数:联系你的主机商,确认新服务器没有禁用织梦更新所需的PHP函数,常见的有
fsockopen,pfsockopen,curl_exec等,你可以在网站根目录创建一个phpinfo.php文件,内容为<?php phpinfo(); ?>,然后访问它来查看详细的环境信息。 open_basedir限制:这个设置会限制PHP脚本只能访问特定目录,如果设置不当,织梦可能无法读取或写入某些文件,检查phpinfo.php的输出中是否有open_basedir项,确保它包含了你的网站根目录。
第五步:清除缓存和重新生成
即使以上都正确,旧的缓存文件也可能导致程序行为异常。
- 清空
/data/cache/目录:通过FTP删除这个目录下的所有缓存文件(如~cfg_cache.inc.php,~index_top.inc.php等),这个目录可以清空,但不要删除目录本身。 - 后台重新生成:登录织梦后台,在“生成”菜单下,选择“一键更新网站”,重新生成首页、栏目页和内容页。
第六步:检查程序文件完整性
如果以上步骤都无法解决,可能是上传文件时出现了遗漏或损坏。
- 对比文件:如果你的旧服务器还在,可以对比一下新旧服务器上关键文件的大小和修改时间,看是否有遗漏。
- 重新上传:最稳妥但最麻烦的方法是:清空新服务器上的所有文件,然后从旧服务器完整地重新下载一份最新的织梦程序,再上传到新服务器,上传时注意使用二进制模式(Binary mode)。
总结与排查流程建议
遇到“搬家后不能更新”的问题,请按以下顺序进行排查,这能帮你最高效地找到问题所在:
- 首要检查:
data/common.inc.php文件中的 数据库信息 和 网站路径 是否100%正确。 - 其次检查:所有相关目录的 文件权限 是否设置为 755 或 777。
- 然后检查:数据库 是否已成功导入,且 表前缀 是否匹配。
- 再次检查:服务器环境(PHP版本、禁用函数)是否有变化。
- 最后手段:清空缓存,甚至 重新上传完整程序。
绝大多数情况下,问题都出在前三步,希望这些步骤能帮助你成功解决问题!
