tp6安装成功的关键在于版本锁定、web根目录设为public/、.env置于项目根目录并启用app_debug=true;缺一不可,否则将导致命令报错、路由404、调试失效等问题。

直接说结论:TP6 安装不是执行一条命令就完事,关键在「版本锁定 + 目录定位 + .env 加载时机」三处。漏掉任一环节,轻则 php think 报错,重则路由 404、数据库连不上、调试开关失效。
composer create-project 必须显式指定 TP6 稳定版
官方已不再将 topthink/think 默认指向 TP6 —— 当前 dev-main 是 TP8 预研分支,^5.1 可能拉下 TP5。不加约束直接运行 composer create-project topthink/think myapp,极大概率装错版本。
正确做法是强制指定 TP6 最后一个稳定发行版:
-
composer create-project "topthink/think:^6.1"(推荐,兼容 PHP 7.1+) - 若需长期维护,可用
composer create-project "topthink/think:6.1.1"(对应最后 tagged 版本) - 装完立刻检查
vendor/topthink/framework/composer.json中的"version"字段是否为6.1.1
Web 服务器根目录必须设为 public/,且 .env 必须在项目根目录
TP6 的入口逻辑硬编码依赖 public/ 为 Web 可访问路径。把整个项目目录设为 DocumentRoot,会导致 index.php 找不到自动加载器、静态资源 404、__ROOT__ 路径错乱。
.env 文件也必须放在和 think 文件同级的项目根目录(即 myapp/.env),不能放 myapp/public/.env 或 myapp/app/.env。框架只在 thinkphp/base.php 初始化早期读取一次,之后改了也不生效。
- Apache:确认
DocumentRoot "/path/to/myapp/public",且.htaccess可被解析(AllowOverride All) - Nginx:
root /path/to/myapp/public;,且fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - PHP 内置服务器:
php -S localhost:8000 -t public/,漏掉-t public/就会报File not found - Linux/macOS 下检查权限:
ls -l .env,确保 Web 进程用户(如www-data)有读取权
APP_DEBUG=true 不写进 .env,你就看不到任何错误
TP6 默认关闭异常显示,空白页或 500 错误背后可能是语法错误、数据库配置错、扩展未启用。不打开调试模式,等于蒙眼排障。
确认 .env 文件内容含以下两行(无空格、无中文引号):
APP_DEBUG=true APP_ENV=local
验证是否生效:在 app/common.php 开头加一行 var_dump($_ENV['APP_DEBUG'] ?? 'not loaded');,刷新页面看输出。如果还是 not loaded,说明 .env 没被读到 —— 八成是位置错了或文件权限拒绝读取。
php think 命令找不到?检查 autoload 和当前路径
php think run 报 Class not found 或 command not found,根本原因不是命令写错,而是 Composer 自动加载没就绪,或你没在正确目录下执行。
- 必须先在项目根目录(含
think文件)执行composer install或composer dump-autoload,否则think脚本无法加载核心类 - Windows 用户注意:
think是 shell 脚本,CMD 中无需chmod,但必须确保当前路径就是项目根目录(cd myapp后再运行) - Linux/macOS 下如果仍报错,运行
php -c /path/to/php.ini ./think run显式指定配置,排除 CLI PHP 与 Web PHP 配置不一致问题
最常被跳过的一环:改完 .env 或配置后,不重启服务。TP6 不支持运行时重载环境变量,php think run 必须 Ctrl+C 再重起,Apache/Nginx 必须 reload,否则所有修改都白做。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











