必须用composer require安装,不能用install或update;install只按lock恢复依赖、ignore包名,update会重算全图致框架升级。装完须确认服务提供者注册、配置文件复制、autoload刷新,缺一即class not found。

必须用 composer require 安装,且要确认服务提供者已注册、配置文件已复制、自动加载已刷新——漏掉任意一步,use 类时都会报 Class not found。
为什么不能用 composer install 或 composer update 装新包
composer install 只按 composer.lock 恢复已有依赖,完全忽略你输的包名;执行 composer install topthink/think-captcha 不会报错,但 vendor/ 里压根不会出现这个目录。
composer update 更危险:它会重算整个依赖图,哪怕你只写 composer update topthink/think-captcha,也可能把 topthink/framework 升到不兼容的版本(比如从 ^8.0 升到 8.2),导致路由失效或命令找不到。
- 新增扩展,只用
composer require vendor/package-name - 确保当前路径是项目根目录(能看见
composer.json和public/) - 装完立刻检查
vendor/vendor-name/是否存在对应文件夹
装完后类还是找不到?重点查这三处
ThinkPHP 8 扩展大多靠服务提供者(Service Provider)注册核心逻辑,仅下载代码不等于可用。
- 打开
config/app.php,确认'providers'数组里有该扩展的服务提供者类,例如think\captcha\CaptchaService::class - 检查
composer.json是否含"dont-discover": ["*"]—— 若有,删掉或改成具体排除项(如["laravel/framework"]) - 运行
composer dump-autoload强制刷新自动加载映射,尤其在手动改过composer.json后
哪些扩展必须加 --dev 参数
命令行工具类扩展(如迁移、测试、调试命令)必须声明在 require-dev 区,否则 php think 找不到命令。
典型例子:topthink/think-migration 在 TP8 下必须用:
composer require --dev topthink/think-migration:^3.0
若误装进 require,即使类文件存在,php think migrate 仍会报 Command "migrate" is not defined。
-
--dev表示该包只在开发环境启用,部署时加--no-dev会跳过安装 - 装完后检查
composer.json的require-dev字段是否已写入 - 如果之前装错了位置,剪切到
require-dev后执行composer update topthink/think-migration
国内网络下容易卡死?别硬扛,换参数
执行 composer require 卡在 Cloning into 或 SSL connection timeout,本质是 Git 协议被干扰或镜像源不可达。
- 先切换国内镜像源:
composer config -g repo.packagist https://mirrors.aliyun.com/composer/ - 加
--prefer-dist强制走 ZIP 包下载,绕开 Git 克隆 - 若仍失败,临时忽略平台扩展检查(仅限调试):
--ignore-platform-req=ext-fileinfo - 但注意:
ext-fileinfo是 TP8 硬性依赖,生产环境必须启用,不能长期忽略
最常被忽略的是服务提供者注册和 require-dev 的位置问题——这两个点不手动确认,装得再快也没用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











