唯一能正确安装ThinkPHP 8.0的是composer create-project命令,因TP8是项目型框架,require仅拉取源码而无app/config/public等骨架及post-create-project-cmd钩子,导致无法运行。

composer create-project 是唯一能正确安装 ThinkPHP 8.0 的命令,其他方式(如 composer require topthink/think)只会得到空壳,无法运行。
为什么不能用 composer require 装 TP8.0
ThinkPHP 是项目型框架,不是纯库。直接 require 只会拉取 topthink/think 包的源码,但不会生成 app/、config/、public/index.php 等必需结构,也缺失 php think 命令支持。
- 现象:执行完
composer require topthink/think后,public/目录不存在,php think报错Command "think" is not defined - 根本原因:缺少
post-create-project-cmd钩子脚本,该脚本只在create-project中触发,负责复制骨架、生成.env、初始化runtime/ - TP8.0 不再兼容手动组装方式,官方已明确弃用
require入口
composer create-project 必加参数说明
不加参数容易拉到不稳定分支或失败,尤其在国内环境。
-
--stability=stable:防止意外拉到dev-main(实际是 TP7 预览版,非 TP8) -
--prefer-dist:跳过 Git 克隆,改用 ZIP 包下载,解决国内Cloning into卡死问题 -
--remove-vcs:删掉vendor/下所有.git,避免后续项目 git push 冲突 - 别加
--no-interaction:它会跳过.env初始化提示,导致APP_DEBUG=false默认关闭,错误全被吞掉
安装后必须立刻验证的三件事
装完不是就结束了,TP8.0 对环境敏感,漏一项就白屏或 500。
- 检查 PHP 版本:
php -v必须 ≥ 8.1 ——ParseError: syntax error, unexpected token "string"就是版本太低的典型报错 - 确认关键扩展已启用:
php -m | grep -E "curl|mbstring|json|openssl|fileinfo",Windows 用户常漏extension=php_fileinfo.dll - 进项目根目录跑:
php think run(不是php think serve),访问http://127.0.0.1:8000;若报Class 'think\App' not found,说明vendor/autoload.php没加载,大概率是 Web 服务器没指向public/目录
常见错误和绕过陷阱
很多“安装成功”的假象,其实卡在权限、路径或配置上。
立即学习“PHP免费学习笔记(深入)”;
-
php think run启动后访问 404:Nginx/Apache 的root或DocumentRoot指向了项目根目录,必须改为/path/to/tp8/public - 首页空白但无报错:检查
.env中APP_DEBUG=true是否生效,以及runtime/目录是否可写(Linux/macOS 下chmod -R 755 runtime) -
php think命令不可用:Windows 用户常见原因是vendor/bin未加入系统 PATH,临时方案是直接运行php vendor/bin/think - 部署到生产环境前,必须执行:
composer install --no-dev --optimize-autoloader,否则phpunit等 dev 依赖可能因扩展缺失(如ext-xdebug)导致安装中断
create-project 成功了也跑不起来。



















