ThinkPHP6运行失败主因是Web根目录未设为public/,而非PHP版本或Composer问题;必须显式指定版本安装、.env置于根目录并设APP_DEBUG=true、Web服务器配置指向public/且启用重写规则。

phpenv 本身不“运行” ThinkPHP,它只是提供 PHP、Nginx/Apache、MySQL 等底层组件;真正运行 TP6 的是 PHP 进程,而 phpenv 只负责把 public/ 目录暴露给 Web 服务器——这一步漏了,TP6 就根本起不来。
为什么 phpenv 启动后访问 tp6 显示 404 或空白页
根本原因不是 PHP 版本不对,也不是 Composer 没装好,而是站点根目录没指向 public/。TP6 强制入口统一收口到 public/index.php,所有静态资源、路由解析、__ROOT__ 路径都依赖这个结构。
- 在 phpenv「网站管理」里新增站点时,根目录必须选到项目文件夹下的
public/子目录(例如D:\phpEnv\www\tp6\public),不能选项目根目录(D:\phpEnv\www\tp6) - Apache 用户要确认虚拟主机配置中
DocumentRoot指向的是public/,且.htaccess生效(AllowOverride All) - Nginx 用户注意:
root指令值必须是public/路径,且fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name中的$document_root才能正确拼出public/index.php - 如果用 phpenv 内置的 PHP 内置服务器测试,别用
php -S手动起——直接在项目根目录运行php think run,它会自动绑定public/并监听localhost:8000
composer create-project topthink/think 报错或拉错版本
TP6 已进入维护期,composer create-project topthink/think 默认可能拉到 TP5 分支(如 5.1.x)或开发中的 TP8(dev-main),这不是 bug,是 Packagist 上包默认分支变更导致的。
- 必须显式指定稳定版约束:
composer create-project "topthink/think:^6.1"(推荐^6.1,兼容性最稳) - Windows 用户执行前确认当前命令行所在路径是 phpenv 的网站根目录(如
D:\phpEnv\www),否则项目会建在奇怪位置 - 如果提示
Could not find package topthink/think,先运行composer clear-cache,再检查是否误配了镜像源(某些旧镜像已下线,导致元数据拉取失败) - 安装完成后,检查项目根目录下是否存在
think可执行文件(Linux/macOS 需chmod +x think;Windows 不需要,但 CMD 必须在该目录下执行)
.env 文件不生效、APP_DEBUG=false 导致白屏
TP6 的环境变量只在应用初始化早期加载一次,且默认关闭错误显示。你改了 .env 却没反应,大概率是因为没重启服务,或者文件放错了位置。
立即学习“PHP免费学习笔记(深入)”;
-
.env必须放在项目根目录(和think文件同级),不是public/下,也不是app/下 - 确保
.env文件权限允许 Web 进程读取(Linux/macOS 下避免是root创建、www-data无法读) - 修改后必须重启:用 phpenv 启动的 Nginx/Apache 要点「重启服务」;用
php think run的要Ctrl+C再重跑 - 验证是否加载成功:在
app/common.php开头加一行var_dump($_ENV['APP_DEBUG'] ?? 'not loaded');,访问页面看输出 - 务必设置
APP_DEBUG=true,否则任何异常都被静默吞掉,只剩 HTTP 500 或空白页
最容易被忽略的其实是伪静态配置——哪怕根目录对了,没开 URL 重写,你访问的还是 http://site.com/index.php/route。phpenv 的 Nginx 站点管理里有现成的「thinkphp」重写规则,勾选启用即可,不用手写 if (!-e $request_filename) 这类易出错的逻辑。



















