ThinkPHP6 项目需显式指定版本安装、正确配置 Composer autoload 和 Web 服务器根目录为 public/,并确保 .env 文件位于根目录且 APP_DEBUG=true 开启调试。

ThinkPHP6 不能直接用 php think 启动,必须先装好 Composer 并正确配置 autoload —— 否则你会卡在“找不到命令”或“Class not found”上。
用 Composer 创建 TP6 项目时为什么总报错?
常见错误是直接运行 composer create-project topthink/think 却没指定版本,结果拉下来的是 TP8(dev-main)或 TP5 的旧分支。TP6 已进入维护期,官方不再默认推最新版。
- 必须显式指定稳定版本:
composer create-project "topthink/think:^6.1" - 如果系统没装 Composer,别用国内一键安装脚本——它们常把
composer.phar放进非 PATH 路径,导致后续php think找不到命令 - Windows 用户注意:CMD 中执行
php think前,确认当前目录是项目根目录(含think文件),且该文件有可执行权限(Linux/macOS 需chmod +x think)
Apache/Nginx 怎么配才能让 public/ 当成 Web 根目录?
TP6 强制要求 Web 服务器入口指向 public/ 目录,否则路由失效、静态资源 404、__ROOT__ 路径错乱。这不是可选项,是框架设计决定的。
- Apache:在虚拟主机配置里把
DocumentRoot改成/path/to/your/project/public,并确保.htaccess可生效(AllowOverride All) - Nginx:把
root指向/path/to/your/project/public,且 location ~ \.php$ 块中 fastcgi_param SCRIPT_FILENAME 必须写成$document_root$fastcgi_script_name(不是 $root) - 本地开发用 PHP 内置服务器?直接运行
php -S localhost:8000 -t public/,别漏掉-t public/
env 文件不生效、数据库连不上,大概率是 .env 权限或加载时机问题
.env 文件只在应用初始化早期被读取,一旦 composer autoload 加载完成,再改它也没用——TP6 不支持运行时重载环境变量。
立即学习“PHP免费学习笔记(深入)”;
- 确认
.env文件放在项目根目录(和think文件同级),不是public/或app/下 - Linux/macOS 下检查文件权限:
ls -l .env,避免是 root 写入、www-data 用户无法读取 - 修改后必须重启 Web 服务或 CLI 进程;用
php think run开发服务器时,改完.env得 Ctrl+C 再重跑 - 调试是否加载成功?在
app/common.php里加一行var_dump($_ENV['APP_DEBUG'] ?? 'not loaded');
最常被跳过的一步:TP6 默认关闭异常显示,.env 里没写 APP_DEBUG=true,你就看不到任何报错,只能看到空白页或 500。别猜,先开这个开关。


















