ThinkPHP6部署核心卡点是环境版本、网站根目录和伪静态规则三者必须精准匹配:PHP须用8.0(禁8.3+),必装fileinfo/openssl/mbstring/pdo_mysql/redis扩展并重启;网站运行目录必须设为/public;Nginx伪静态规则需为location / { try_files $uri $uri/ /index.php?$query_string; };上传前须删runtime、关闭APP_DEBUG。

ThinkPHP6项目部署不是把代码丢上去就能跑,核心卡点就三个:环境版本对得准、网站根目录指得对、服务器转发规则配得稳。漏掉任何一个,轻则404、白屏,重则502或直接报Class 'think\App' not found。
PHP版本与扩展必须严格匹配
TP6官方明确推荐PHP 8.0,禁用8.3及以上版本——后者会导致函数未定义、路由解析失败等兼容问题。MySQL建议选5.7或8.0,需与本地开发环境一致。
- 在宝塔「软件商店」中手动选择PHP 8.0安装(勿选“最新版”)
- 进入该PHP版本的「设置 → 安装扩展」,必须勾选:fileinfo、openssl、mbstring、pdo_mysql、redis
- 扩展安装完成后,务必点击「重启」PHP服务,否则不生效
网站运行目录必须设为 /public
TP6是单入口架构,所有请求必须经public/index.php统一调度。若网站根目录指向项目根目录(如/www/wwwroot/myapp),会造成:
-
app/、config/等目录可被直接访问,存在源码泄露风险 - 静态资源(如
public/static/)全部404 - 路由无法识别,页面空白或报错
操作路径:宝塔「网站 → 设置 → 网站目录」→ 将「运行目录」改为 /public(注意开头斜杠),并勾选「重载Nginx配置」后保存。
立即学习“PHP免费学习笔记(深入)”;
伪静态规则要贴合TP6路由机制
TP6默认使用PATH_INFO模式,Nginx需通过规则把非静态请求正确转发给public/index.php,否则所有路由都返回404。
- 进入站点「设置 → 伪静态」,清空原有内容
- 粘贴标准规则:
location / { try_files $uri $uri/ /index.php?$query_string; } - 保存后立即生效,无需重启Nginx
上传前本地必须清理和调整
带缓存或调试配置的项目上传后极易出问题,务必提前处理:
- 删除本地项目根目录下的 runtime/ 整个文件夹(保留空目录结构即可)
- 检查
.env文件,确保 APP_DEBUG = false,时区设为Asia/Shanghai - 数据库配置(
DATABASE段)可先留空,后续在宝塔单独创建数据库再填入 - 上传建议用.zip压缩包,通过宝塔「文件」管理器上传后在线解压,避免FTP断连丢文件



















