thinkphp 8.1需php 8.1/8.2(禁用7.x和8.0),安装时勾选fileinfo等扩展并重启php服务;网站根目录设项目路径,运行目录强制为/public;伪静态必须用tp6/tp8专用规则,并重载+重启nginx。

直接装 PHP 8.1 + 把网站运行目录设成 /public,ThinkPHP 8.1 就能跑起来。别用 PHP 7.x 或 8.0,会报 ParseError: syntax error, unexpected token "|" —— 这是联合类型语法不兼容,不是配置问题。
必须用 PHP 8.1(或 8.2)且启用 fileinfo 等扩展
ThinkPHP 8.1 基于 PHP 8.0+ 的语法特性,低于 8.0 的版本连解析都过不去。宝塔里不能只点“安装”,得确认三点:
- 在【软件商店】搜索 PHP,选
PHP 8.1.28或更高小版本(避开早期 8.1.0–8.1.25,有opcache崩溃 bug) - 安装时务必勾选:
fileinfo(框架自动检测必需)、mbstring、pdo_mysql、openssl、curl、json、ctype - 安装完立刻进该 PHP 版本的【设置】→【服务管理】→【重启】,否则
phpinfo()仍显示旧版本,后续全白忙
网站根目录 ≠ 项目根目录,运行目录必须填 /public
ThinkPHP 8.1 入口统一在 public/index.php,如果网站根目录设在项目顶层(比如 /www/wwwroot/myapp),就会暴露 app/、config/、.env 等敏感目录,而且所有路由 404。
- 添加站点时,“根目录”填完整路径(如
/www/wwwroot/myapp),PHP 版本选刚装好的 8.1 - 上传解压后,确认目录结构含
public/、app/、runtime/ - 进站点【设置】→【网站目录】→把【运行目录】从空值改成
/public - 勾选【重载 Nginx 配置】→【保存】→再手动点一次【重启 Nginx】(只重载不重启,规则不生效)
伪静态必须用 TP6/TP8 专用规则,别套宝塔默认模板
宝塔自带的“ThinkPHP”伪静态是为 TP5 写的,直接套在 TP8 上会导致首页能打开、点链接全 404——因为 PATH_INFO 解析失败。
- 进站点【设置】→【伪静态】→清空原有内容
- 粘贴 TP6/TP8 兼容规则:
location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } } - 别用
try_files $uri $uri/ /index.php?$query_string,TP8 不认这个写法 - 改完一定要【重载】+【重启 Nginx】,缺一不可
最易被忽略的是:运行目录设了 /public 但没重启 Nginx,或者伪静态改了但只点了【重载】没【重启】——这两步漏掉,页面就永远卡在 404 或空白,查日志也看不出原因。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











