根本原因是Web服务器未指向TP6的public/目录,而应将站点根目录设为项目/public路径;同时需确保.env在根目录且有读权限、runtime/可写、数据库配置正确及Composer指定^6.1版本。

phpEnv 装完 TP6 为啥访问是 404 或空白页
根本原因是 Web 服务器没指向 public/ 目录,而是直接映射到了项目根目录(含 think 文件的那层)。TP6 强制入口统一收口到 public/index.php,所有静态资源、路由解析、__ROOT__ 路径都依赖这个结构。
在 phpEnv 中配置站点时,必须手动把「站点根目录」设为 tp-demo/public(或你项目的 xxx/public),不是 tp-demo。这点被跳过就会全程 404 —— 连首页都打不开,更别说路由和 CSS 加载。
- Apache 用户:确认虚拟主机的
DocumentRoot指向的是public/,且.htaccess生效(phpEnv 默认已配好AllowOverride All) - Nginx 用户:在 phpEnv 的「网站 → 配置 → URL重写」里选中
thinkphp规则;同时检查root行是否明确写成root /path/to/tp-demo/public; - Windows 下用 hosts 绑定本地域名(如
www.tp6.test)后,浏览器输域名打不开?先 ping 一下确认解析正常,再查 phpEnv 是否已启动对应站点服务
composer create-project 报错“Could not find package”或拉下 TP8/dev-main
官方早已不再将 topthink/think 的 latest 标签指向 TP6,当前稳定版是 ^6.1。不显式指定版本,Composer 默认会尝试拉取最新分支(比如 dev-main,即 TP8 开发版),而它和 TP6 完全不兼容。
正确命令只有一条:
立即学习“PHP免费学习笔记(深入)”;
composer create-project "topthink/think:^6.1" tp6-demo
注意引号不能省——Windows CMD 和某些 Shell 对 ^ 符号敏感,不加引号会被提前解析掉。
- 如果已误装了非 TP6 版本,别改
composer.json后update:TP8 的目录结构、命名空间、核心类名全变了,硬升/硬降大概率报Class not found - 执行前确认 Composer 已全局可用:
composer -v能输出版本(建议 ≥2.2);若提示“不是内部命令”,说明 phpEnv 的 Composer 没加入系统 PATH,需手动到 phpEnv 安装目录下的tools/composer里运行 - 国内用户务必提前换源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer,否则超时失败极常见
.env 文件写了 APP_DEBUG=true 却还是看不到错误
TP6 的环境变量只在应用初始化早期加载一次,且严格依赖文件位置和权限。写错地方、权限不对、或没重启进程,都会导致 .env 形同虚设。
必须满足这三点:
-
.env文件得放在项目**根目录**(和think、composer.json同级),不是app/下,也不是public/下 - Linux/macOS 下运行
ls -l .env,确保当前 Web 服务用户(如www-data或_www)有读权限;Windows 一般无此问题,但要确认文件没被记事本另存为 UTF-8 with BOM(会导致解析失败) - 改完
.env后,必须重启服务:Apache/Nginx 要 reload,用php think run的得Ctrl+C再重跑,内置服务器php -S也得停掉重起
快速验证是否生效:在 app/common.php 顶部加一行 var_dump($_ENV['APP_DEBUG'] ?? 'not loaded');,刷新页面看输出。输出 bool(true) 才算真正加载成功。
数据库连不上、runtime 目录报权限错误
TP6 的 runtime/ 是运行时日志、缓存、模板编译的落盘目录,默认在项目根目录下。Web 服务用户没写入权限,就卡在「无法创建目录」或「Permission denied」。
phpEnv 默认用 Windows 服务方式运行 Apache/Nginx,实际是以 SYSTEM 或 LocalService 身份启动,对用户目录(如 C:\Users\XXX\)下的项目路径常无写权限。
- 最稳妥做法:把项目建在 phpEnv 自带的网站目录里(如
D:\phpEnv\www\tp6-demo),该路径默认可写 - 若坚持放其他盘符或自定义路径,右键项目根目录 → 属性 → 安全 → 编辑 → 添加
IIS_IUSRS(IIS)或Users(Apache)组,并勾选「完全控制」 - 数据库配置优先填在
.env里(DATABASE.HOSTNAME=127.0.0.1等),比改config/database.php更灵活;但注意.env里的DATABASE.TYPE必须小写(mysql、pgsql),大写会静默失败 - 连接 HGDB(瀚高数据库)?确认 phpEnv 的 PHP 已开启
pdo_pgsql和pgsql扩展:打开php.ini(路径见 phpEnv 设置页),去掉这两行前面的分号;,然后重启 phpEnv 服务
TP6 的约束很硬:入口必须是 public/、.env 加载时机不可逆、runtime/ 权限是 Windows 下最常翻车的点。别试图绕过这些设计去“适配旧习惯”,直接按框架要求配,反而最快跑通。



















