ThinkPHP 6.3 安装与域名绑定必须分两步:先用 composer create-project topthink/think tp63 "6.3.*" 创建项目,再在 route/app.php 中用 Route::domain() 配置;Web 根目录须指向 public/,且需启用多应用、正确设置 url_domain_deploy。

不能“一键”完成,必须分两步:先用 composer create-project 安装框架,再手动配置域名绑定规则。所谓“一键”是误解,ThinkPHP 6.3 没有内置自动绑域名的命令或脚本。
安装 ThinkPHP 6.3 必须用 Composer 命令
手动下载 ZIP 包、解压、复制 vendor 目录等操作在 TP6+ 已完全失效,会直接报 Class 'think\App' not found。唯一可靠方式是:
- 确保
php -v≥ 7.2.5(推荐 7.4+),且composer --version能正常输出 - 执行:
composer create-project topthink/think tp63 "6.3.*"(引号内版本必须写成"6.3.*",不能是6.3.0或6.3) - Web 服务器根目录必须指向
public/子目录,不是项目根目录
域名绑定必须写在 route/app.php 中
Route::domain() 只在 route/app.php 文件里生效,写在 config/route.php、app/middleware.php 或控制器里都无效。常见错误包括:
- 误写成
Route::domain('admin.example.com', 'admin/index/index')→ 第二参数必须是闭包或数组,字符串路径会报Invalid route rule - 本地开发时写
Route::domain('admin.example.com', [...])却访问localhost:8000→$_SERVER['HTTP_HOST']不匹配,路由静默失败 - 把通配符
Route::domain('*', ...)放在精确域名之前 → 后者永远不触发
多应用 + 二级域名要配 url_domain_deploy 和应用目录结构
想让 admin.example.com 自动加载 app/admin/,不是靠改入口文件,而是:
立即学习“PHP免费学习笔记(深入)”;
- 先确认已启用多应用:删掉根目录下的
app/controller目录(这是关键开关) - 执行
php think build admin创建独立应用目录,生成app/admin/ - 在
config/app.php中设'url_domain_deploy' => true(注意:APP_SUB_DOMAIN_DEPLOY已废弃) - 在
route/app.php中写:Route::domain('admin', 'admin')(右侧是应用目录名,不是控制器路径)
最容易被忽略的是 Web 服务器是否透传 HTTP_HOST。Nginx 配置里若用了 proxy_set_header Host $host; 但没带端口,而你本地用 :8080 访问,Route::domain('admin.example.com') 就永远不命中。真要调试,先加一行 var_dump($_SERVER['HTTP_HOST']); 看实际值再说。



















