ThinkPHP跨服务器迁移核心是环境一致性、入口路径正确、runtime目录可写、配置安全生效;需用mysqldump --no-definer --skip-triggers导出数据库并grep检查DEFINER,PHP须版本及扩展(openssl、mbstring等)严格对齐且mbstring.func_overload=0,Web服务器root必须指向public目录、伪静态规则适配、.env权限设为644并禁止Web访问,迁移后必须清空runtime目录。
ThinkPHP跨服务器迁移不是简单复制代码,核心是环境一致性、入口路径正确、运行时目录可写、配置安全生效。跳过任一环节,轻则白屏404,重则数据库连不上或缓存全错。
直接mysqldump可能带CREATE DEFINER语句,新服务器若无对应用户,导入会静默失败或跳过表。
--routines;多数情况不加,否则易因权限报错ThinkPHP对openssl、mbstring等扩展敏感,版本或配置偏差会导致验证码异常、Redis加密失败、JSON解析乱码。
mbstring.func_overload = 0(查php -i | grep func_overload)-v
Nginx或Apache配置稍有偏差,就会出现“首页能打开,路由全404”这种半通状态,极难排查。
立即学习“PHP免费学习笔记(深入)”;
root /var/www/myapp/public;,Apache DocumentRoot同理try_files $uri $uri/ /index.php?$query_string;;.htaccess对Nginx无效chmod 644 .env,并在Nginx配置中加location ~ /.env { deny all; }
迁移后不清理runtime,缓存里仍存老数据库地址、旧时区设置,导致连接失败或日志时间错乱。