Typecho 迁移后无法运行,通常是由于数据库配置、文件权限或服务器环境不匹配导致的。请按照以下步骤逐一排查,解决绝大多数迁移问题。
🗄️ 第一步:检查数据库配置
这是最常见的问题。迁移后,数据库的连接信息必须更新。
核对配置文件
打开 Typecho 根目录下的 config.inc.php 文件,检查数据库的主机、用户名、密码和数据库名是否已修改为新服务器的正确信息。
修改数据库适配器
在 config.inc.php 文件中,找到定义数据库的那一行。很多迁移问题是因为数据库适配器不兼容导致的。
错误示例:db = new Typecho_Db('Mysql', 'typecho_');
正确示例:将其修改为 Pdo_Mysql。
db = new Typecho_Db('Pdo_Mysql', 'typecho_');
🌐 第二步:配置伪静态规则 (解决 404 错误)
如果能访问首页,但文章页、后台等链接都显示 404 错误,说明是伪静态规则(URL Rewrite)没有配置好。
如果你使用 Nginx:
在你的站点配置文件中,添加或修改 location / 块,加入以下规则:
location / {
try_files uri uri/ /index.php?$args;
}
修改后,记得重启 Nginx 服务:sudo systemctl restart nginx。
如果你使用 Apache:
确保网站根目录下存在 .htaccess 文件,并且 Apache 配置中已开启 mod_rewrite 模块。
如果你使用宝塔等面板:
在网站设置中找到“伪静态”选项,选择 typecho 规则并保存即可。
👤 第三步:修正文件权限
文件权限不正确会导致程序无法读取配置或写入数据(如上传图片)。请确保 Web 服务器用户(通常是 www-data 或 nginx)拥有文件的所有权。
在终端执行以下命令(将 /path/to/typecho 替换为你的实际路径):
修改所有者为 www-data (如果你的 Web 用户是 nginx,请相应修改)
sudo chown -R www-data:www-data /path/to/typecho
设置目录权限为 755
sudo find /path/to/typecho -type d -exec chmod 755 {} ;
设置文件权限为 644
sudo find /path/to/typecho -type f -exec chmod 644 {} ;
确保上传目录可写
sudo chmod -R 777 /path/to/typecho/usr/uploads
🔧 第四步:排查 PHP 版本与插件冲突
如果网站出现 500 错误 或 503 错误,很可能是 PHP 版本或插件不兼容问题。
检查 PHP 版本:确认新服务器的 PHP 版本与旧服务器一致。如果版本过高(如从 PHP 5.x 升级到 7.x 或 8.x),可能会导致不兼容。
禁用所有插件:
通过 FTP 或文件管理器,进入 /usr/plugins/ 目录。
将所有插件文件夹重命名(例如在前面加一个 _),以临时禁用它们。
刷新网站,如果能正常访问,则说明是某个插件导致的。再逐个恢复插件文件夹来找出问题插件。切换默认主题:同样,如果插件没问题,尝试将 /usr/themes/ 下的当前主题文件夹重命名,强制 Typecho 使用默认主题。
🚀 终极方案:利用安装程序修复
如果以上步骤都无法解决,可以尝试利用 Typecho 自带的安装程序进行修复。
备份你当前的 config.inc.php 文件。
删除新服务器上的 config.inc.php 文件。
访问你的网站域名,Typecho 会重新进入安装向导。
在“初始化配置”步骤,填入你已经导入数据的数据库信息。
安装程序会检测到数据库已存在,并提示“安装失败!”,此时选择 “使用原有数据” 即可。
这个方法可以帮你重新生成一个完全正确的 config.inc.php 配置文件。