正确命令是 composer remove,它自动移除 composer.json 条目、清理 vendor 目录、更新 lock 文件并重建 autoload;不可用 uninstall 或手动删文件,须在含 composer.json 的项目根目录执行,且必须使用完整原包名。

composer remove 是卸载 ThinkPHP6 插件(即 Composer 包)的正确命令,不是 composer uninstall 或手动删 vendor 目录。
composer remove 必须在项目根目录执行
- 项目根目录指包含
composer.json和vendor/的目录,也是运行过php think能正常工作的目录 - 如果在子目录(如
app/或public/)下执行,会报错:Could not find a composer.json file in /xxx/yyy - 执行前先确认:运行
ls -la | grep composer.json(Linux/macOS)或dir composer.json(Windows),确保文件存在
卸载插件时必须用原包名,不能改写或缩写
- 安装时用了
composer require thans/tp-jwt-auth,卸载就必须用composer remove thans/tp-jwt-auth - 错误示例:
-
composer remove tp-jwt-auth→ 找不到包 -
composer remove thans/tp-jwt-auth:dev-master→ 语法错误,remove不接受版本约束 -
composer remove thans/tp-jwt-auth --dev→ 无效参数,remove自动识别包所在段(require或require-dev)
-
卸载后需检查三处是否清理干净
-
composer.json中对应包名已从require(或require-dev)字段移除 -
vendor/目录下对应文件夹(如vendor/thans/tp-jwt-auth)已不存在 - 运行
php -r "require 'vendor/autoload.php'; var_dump(class_exists('thans\jwt\JWTAuth'));"应返回bool(false) - 若仍能加载类,说明自动加载缓存未刷新:执行
composer dump-autoload
真正容易被忽略的是自动加载残留。哪怕 vendor/ 里文件删了、composer.json 也改了,composer autoload 缓存没重建,旧类仍可能被 new 成功——尤其在 CLI 环境下跑单元测试或命令行任务时,这个坑最隐蔽。



















