ThinkPHP在宝塔面板报错主因是根目录未指向public目录及伪静态配置错误;需将网站根目录设为/public,选用“ThinkPHP 6”伪静态规则,并开启PHP错误显示。

宝塔面板运行 ThinkPHP 报错,八成是入口文件没放对位置,或伪静态/路由配置没对齐框架要求。
入口文件必须放在 public 目录下,且网站根目录要指向它
ThinkPHP 6+ 强制要求入口文件(index.php)位于 public 子目录中,而宝塔默认把网站根目录设在项目根目录(即含 app、config、public 的那一层)。这会导致 PHP 找不到自动加载器、报 Class 'think\App' not found 或直接 500。
- 登录宝塔 → 网站 → 找到对应站点 → 修改“网站目录” → 将根目录路径从
/www/wwwroot/your-project改为/www/wwwroot/your-project/public - 确认
public/index.php存在且可读(权限建议 644,所属用户与宝塔运行用户一致,通常是www) - 不要手动把
index.php剪切到上层目录——这会破坏 PSR-4 自动加载路径
伪静态规则必须用 ThinkPHP 官方版,不能用 Nginx 默认或 Laravel 规则
宝塔新建站点时默认启用的“ThinkPHP”伪静态,其实是旧版(TP5)规则,对 TP6 不完全兼容;若选了“Laravel”或空着,URL 路由全挂,访问除首页外的地址直接 404。
- 进入宝塔网站设置 → “伪静态”选项卡 → 选择“ThinkPHP 6”(不是“ThinkPHP”)
- 若没有“ThinkPHP 6”选项,请手动粘贴以下规则(Nginx):
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
}
- Apache 用户需确保
.htaccess在public/下且已启用mod_rewrite;宝塔 Apache 环境下推荐直接选“ThinkPHP 6”伪静态模板,避免手写出错
APP_DEBUG 开启后仍看不到错误?检查 PHP 错误显示开关
即使 ThinkPHP 设置了 APP_DEBUG = true,宝塔 PHP 配置里若关了 display_errors 或设了 error_reporting = 0,页面仍只显示空白或 500,日志也不输出具体异常。
立即学习“PHP免费学习笔记(深入)”;
- 宝塔 → PHP 设置 → “配置修改” → 确保以下三项为开启状态:
display_errors = Onerror_reporting = E_ALLlog_errors = On
- 改完重启 PHP 服务(如 PHP-8.1)
- 同时检查
public/index.php顶部是否保留了环境检测代码(TP6 默认有),别误删define('APP_DEBUG', true);
最常被忽略的是:宝塔子目录部署(比如二级目录运行 TP)、或用了多应用模式却没配好 app/multi_app.php,这时路由解析会静默失败。务必先确认是单应用标准结构,再逐步加复杂度。











