ThinkPHP项目在宝塔面板跑通的关键是三处配置对齐:PHP版本与扩展(推荐8.1/8.2并启用fileinfo、mbstring、pdo_mysql等)、网站运行目录设为/public、伪静态规则用TP6专用写法(如location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } }),任一错误将导致404、白屏或安全风险。

ThinkPHP 项目在宝塔面板上能跑通,关键不在代码,而在三处配置必须对齐:PHP 版本与扩展、网站运行目录、Nginx 伪静态规则。配错任意一项,轻则首页白屏、链接全 404,重则直接报 ParseError 或暴露 .env 文件。
PHP 版本和必要扩展必须装齐
ThinkPHP 6.0+ 要求 PHP ≥ 7.3,但推荐用 PHP 8.1 或 8.2(PHP 8.0 已停止安全更新;8.3+ 存在兼容问题,不建议)。光装版本不够,以下扩展缺一不可:
-
fileinfo(框架自动检测文件类型必需) -
mbstring(中文、编码处理) -
pdo_mysql(连 MySQL 数据库) -
openssl和curl(HTTPS 请求、第三方 SDK 如微信/支付) -
ctype、json(基础类型判断与数据交换)
操作路径:宝塔【软件商店】→ 找到对应 PHP 版本 → 【设置】→ 【安装扩展】→ 全部勾选 → 【安装】→ 安装完务必点【重启】PHP 服务(只重载不生效)。
网站运行目录必须设为 /public
ThinkPHP 6 强制入口统一在 public/ 下,index.php 和静态资源(CSS/JS)都在这里。若根目录仍指向项目顶层(如 /www/wwwroot/myapp),会导致:
-
app/、config/、.env等敏感目录可被直接访问 - 所有路由解析失败,返回 404
正确操作:
- 添加站点时,根目录填完整路径(如
/www/wwwroot/myapp) - 上传解压后,确认存在
public/、app/、runtime/等标准结构 - 进该站点【设置】→【网站目录】→将【运行目录】改为
/public - 勾选【重载 Nginx 配置】→ 【保存】→ 返回再点一次【重启 Nginx】
伪静态规则必须用 TP6 专用写法
宝塔自带的「ThinkPHP」伪静态模板是为 TP5 设计的,套在 TP6 上会导致首页能打开、点链接全 404(PATH_INFO 解析失败)。
进站点【设置】→【伪静态】→ 清空原有内容,粘贴以下任一规则(二者均适配 TP6 + public 为运行目录):
立即学习“PHP免费学习笔记(深入)”;
- 推荐规则(更通用):
location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; } } - 替代规则(部分环境更稳定):
location / { try_files $uri $uri/ /index.php?$query_string; }
改完后必须【重载】并【重启 Nginx】才生效。
上线前必须检查的安全项
- 删除项目根目录下的
.env文件,或确保其中APP_DEBUG = false - 检查
runtime/目录权限,确保 Web 用户(如www)有读写权限(可执行chown -R www:www /www/wwwroot/myapp/runtime) - 进 PHP 设置 → 【配置修改】→ 搜索
disable_functions,删掉scandir(TP6 启动依赖它扫描目录) - 确认
date.timezone = Asia/Shanghai,避免日志时间错乱
不复杂,但每一步都容易忽略。



















