必须用 composer create-project 安装 TP6,因 TP6 是「框架即项目」结构,仅此命令能生成含 app/、public/、think 脚本等完整骨架并注入 PSR-4 自动加载;手动解压 ZIP 或 require 会导致 Class not found、白屏或路由失效。
php
Env 里装 TP6 必须用 composer create-project,不能拖文件
phpEnv 自带 PHP、Apache/Nginx 和 Composer,但很多人误以为把下载的 TP6 ZIP 解压进网站目录就能跑——不行。TP6 的核心已移入
,靠 Composer 自动加载,手动复制只会卡在
或
。
正确做法是:打开 phpEnv 自带的命令行(它默认就 cd 进了网站根目录,比如
),直接执行:
注意两点:
必须显式写上,否则可能拉到 TP5 或 TP8 dev 分支;
是新建目录名,可改,但别带空格或中文。
执行完会生成
目录,里面含
、
、
、
等标准结构
确认
存在且和
文件同级,不是放在
或
下
如果报
,先运行
换镜像
phpEnv 站点配置必须指向 public/,不是项目根目录
TP6 强制要求 Web 入口是
,否则路由 404、静态资源找不到、
错乱——这不是“建议”,是框架底层路径硬编码决定的。
立即学习
“
PHP免费学习笔记(深入)
”;
在 phpEnv 的「网站管理」里新增站点时:
网站域名
填本地测试用的,比如
网站目录
必须选到
,不是
保存后,去系统
最后加一行:
如果访问
显示空白页或 500,大概率是
里没开调试:
缺失或拼错。别猜,先加这行再刷新。
phpEnv 启动 TP6 内置服务器要加 -t public/,否则报错
想跳过 Apache/Nginx 直接试运行?可以,但命令容易错:
这个命令在 phpEnv 命令行里大概率失败,报
或白屏——因为
默认用当前目录当 Web 根,而 TP6 入口在
。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
正确启动方式(必须指定
):
或者用 TP6 自带的封装命令(需确保
文件有执行权限,Windows 一般不用管):
两者效果一样,都等价于
。浏览器打开
就能看见欢迎页。
runtime 目录权限和 .env 加载时机是 phpEnv 里最常忽略的两个点
phpEnv 在 Windows 上跑得顺,但一旦涉及日志写入、缓存生成、模板编译,就会卡在
目录——它默认没写入权限,尤其当你用管理员身份装的 phpEnv,而 Apache/Nginx 是以普通用户(如
)运行时。
解决方法很简单:右键点击
→ 属性 → 安全 → 编辑 → 添加
或
组,并勾上“写入”权限。
另一个隐形坑是
修改后不生效:
只在应用初始化最早期读一次,之后改了也没用
改完必须重启 Web 服务(phpEnv 里点「重启 Apache」或「重启 Nginx」)或重跑
验证是否加载成功?在
开头加一行:
,看输出是不是
这两处不处理,你会反复遇到“明明改了数据库配置却连不上”“日志死活不生成”这类问题,查半天发现是权限或加载时机不对。
vendorClass not foundrequire(): failed to open streamC:\phpenv\wwwcomposer create-project "topthink/think:^6.1" myproject^6.1myprojectmyproject/apppublicvendorthinkmyproject/.envthinkpublic/app/Could not find package topthink/thinkcomposer config -g repo.packagist composer https://mirrors.aliyun.com/composer/public/__ROOT__tp6.testmyproject/publicmyprojectC:\Windows\System32\drivers\etc\hosts127.0.0.1 tp6.testhttp://tp6.test.envAPP_DEBUG=truecd myproject
php think runUnable to load configurationphp think runpublic/-t public/php -S localhost:8000 -t public/thinkphp think run -p 8000php -S localhost:8000 -t public/http://localhost:8000runtime/SYSTEMmyproject/runtimeIIS_IUSRSUsers.env.envphp think runapp/common.phpvar_dump($_ENV['APP_DEBUG'] ?? 'not loaded');true