宝塔面板部署ThinkPHP 6二级域名需三步:独立建站并设根目录为新路径、运行目录必须选/public且重载Nginx、伪静态用TP6专用规则并删除fastcgi_split_path_info相关配置。

宝塔面板部署 ThinkPHP 时配置二级域名,核心不是加个子域就完事,而是要让二级域名真正指向 ThinkPHP 项目、走对入口、路由能解析。关键在三点:站点独立创建、运行目录设为 /public、伪静态规则用 TP6 专用版且位置正确。
二级域名必须单独建站,不能套在主站下
ThinkPHP 6+ 强制要求 Web 入口只能是 public/ 目录,而宝塔默认站点根目录指向项目顶层(如 /www/wwwroot/myapp)。如果把二级域名(如 api.example.com)仅设为“子目录”或“反向代理”,config/、app/ 等敏感目录可能被直接访问,index.php 也无法作为统一入口启动框架。
正确做法是:
- 在宝塔「网站」→「添加站点」,域名填
api.example.com - 根目录选一个全新路径,比如
/www/wwwroot/api.example.com(不要复用主站目录) - 将完整的 ThinkPHP 6 项目上传至此目录,确保
public/index.php存在
运行目录必须选 /public,且立即重载服务
新建站点后,默认运行目录是空的或 /,这会导致框架无法启动或路由全 404。
立即学习“PHP免费学习笔记(深入)”;
操作步骤:
- 进入该二级域名站点的「设置」→「网站目录」→「运行目录」下拉框中选择
/public - 注意:不是手动输入
/public,也不是留空,必须从下拉菜单里点选 - 点完立刻点击右上角「重载 Nginx」(别只点保存)——旧进程不重启,配置无效
伪静态必须用 TP6 专用规则,禁用 fastcgi_split_path_info
宝塔自带的「ThinkPHP」模板是为 TP5 设计的,TP6 默认走 PATHINFO 模式,但会被 Nginx 的 fastcgi_split_path_info 清空 $_SERVER['PATH_INFO'],结果就是首页能开、点链接全 404。
两步必须同步做:
- 在「伪静态」选项卡中,清空原有内容,粘贴以下规则:
if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } - 进「配置文件」选项卡,在
location ~ \.php($|/)块内:
– 删除fastcgi_split_path_info ^(.+\.php)(/.+)$;
– 删除fastcgi_param PATH_INFO $fastcgi_path_info;
– 补上fastcgi_param PATH_INFO $request_uri;
PHP 设置需放开关键函数和参数
TP6 启动阶段依赖 scandir() 扫描目录、用 putenv() 和 ini_set() 动态设置环境,若被禁用会白屏或报错。
检查路径:宝塔 → 「软件商店」→ 找到当前 PHP 版本 → 「设置」→ 「配置修改」→ 搜索 disable_functions
确认以下函数未出现在禁用列表中:
scandirputenvini_set
同时确认「防跨站攻击(open_basedir)」已关闭,否则 runtime/ 目录写入失败,日志报错。



















