ThinkPHP 8.0上线需三步:①安装PHP 8.1/8.2并启用fileinfo等扩展;②网站根目录设为public、启用thinkphp伪静态、关闭防跨站;③删除.env、关闭APP_DEBUG、chown runtime可写。

ThinkPHP 8.0 要跑起来,不是上传代码就完事——PHP版本错、目录设错、伪静态漏配,任一环节出问题,轻则404白屏,重则直接报错暴露数据库密码。但这些都不是技术门槛,而是操作细节。只要按顺序把三件事做对:装对PHP、指对public、关掉调试和防跨站,新手也能一次上线。
确认并安装兼容的PHP版本
ThinkPHP 8.0 强制要求 PHP ≥ 8.0.0,低于此版本会直接报 ParseError: syntax error, unexpected token "|" ——这是PHP 7.x完全不支持联合类型语法导致的。宝塔里不能选最新版PHP 8.5,也不能用已停止维护的8.0,推荐安装 PHP 8.1 或 8.2。
- 登录宝塔 → 左侧【软件商店】→ 搜索“PHP” → 找到PHP 8.1/8.2 → 点击【安装】
- 安装时务必勾选:fileinfo、mbstring、openssl、curl、pdo_mysql、ctype、json
- 安装完成后,进【已安装】列表 → 点击该PHP右侧【设置】→【服务管理】→ 确认状态为“正在运行”,并点击【重启】
创建站点并强制指向 public 目录
ThinkPHP 8.0 的入口文件 index.php 在 public/ 子目录下,若网站根目录设在项目顶层(如 /www/wwwroot/think8),所有请求将绕过路由机制,导致404或直接暴露 app/、config/ 等敏感目录。
- 左侧【网站】→【添加站点】→ 填写域名(测试可用 test.local)→ 根目录填项目路径(如 /www/wwwroot/think8)→ PHP版本选刚装好的8.1 → 提交
- 上传完整项目压缩包至该根目录 → 在线解压 → 确认存在 public/、app/、config/ 等标准目录
- 返回【网站】列表 → 点击站点右侧【设置】→【网站目录】→ 将【运行目录】改为 /public(注意开头斜杠)→ 勾选【重载Nginx配置】→ 【保存】
配置伪静态与关闭关键安全限制
宝塔内置的 thinkphp 伪静态规则已适配TP8,默认使用 PATH_INFO 模式,无需额外开启开关;但必须关闭防跨站(open_basedir),否则 runtime 目录写入失败,日志、缓存全不可用。
立即学习“PHP免费学习笔记(深入)”;
- 站点【设置】→【伪静态】→ 下拉选择【thinkphp】→ 【保存】→ 【重载配置】
- 站点【设置】→【SSL】→【其他】→ 关闭【防跨站攻击(open_basedir)】
- 进入项目根目录,执行:chown -R www:www runtime/(确保 runtime 可写)
上线前必须清理的本地配置
本地开发留下的调试配置,是线上环境最常被忽略的风险点。.env 文件若未处理,APP_DEBUG 开启状态下访问任意URL,都可能直接打印数据库账号密码。
- 上传前删除项目根目录下的 .env 文件(或至少清空 DATABASE 部分,留占位值)
- 检查 config/app.php 中 app_debug 是否为 false
- 删除本地 runtime/ 整个文件夹(保留空目录结构即可,上传后由Web用户自动重建)



















