答案是项目级repositories配置覆盖全局镜像且未显式声明源,导致composer仅查询指定地址而忽略其他包;需检查composer.json中是否完整配置type为composer/vcs的源、url结尾带/、name字段严格匹配,并手动删除provider元数据缓存。

Composer仓库配置后依赖包找不到,说明你已手动声明了repositories但Composer仍无法识别该源中的包——不是没配,而是配得不完整或被其他配置覆盖,导致Composer根本没去你指定的地址查。
确认项目是否真的在用你配的源
执行composer config --list | grep repositories,如果输出中包含repositories字段,说明项目级配置已生效,全局镜像(如阿里云)此时【完全失效】。
打开项目根目录下的composer.json,检查repositories数组里是否漏掉了 Packagist 官方镜像或你自己的私有源声明;若只加了一条 Git 地址却没补上镜像源,Composer 就只会查那一个 Git 仓库,其他所有包都“消失”。
必须显式写入:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}——注意 URL 结尾的/不能省,否则拼接成https://mirrors.aliyun.com/composerpackages.json直接 404。
验证私有仓库配置是否合法
方法一:检查composer.json中repositories的type值是否为vcs、composer或package之一,其他值(如git、github)会被静默忽略。
方法二:进入私有仓库的 Git 地址(如https://github.com/your-org/your-package),确认其根目录存在composer.json文件,且其中"name"字段严格匹配你require时写的vendor/name格式,比如"name": "acme/utils",你就必须写composer require acme/utils,写成acme-utils或Acme/Utils全错。
方法三:运行curl -I https://github.com/your-org/your-package,看是否返回HTTP/2 200;若返回404或需要登录,说明仓库不可公开访问,你还得配置 GitHub Token:composer config -g github-oauth.github.com YOUR_TOKEN。
清除 provider 元数据缓存
第一步:查缓存路径。
Linux/macOS 执行:ls -d ~/.composer/cache/repo/https---mirrors.aliyun.com-composer
Windows 执行:dir "%APPDATA%\Composer\cache\repo\https---mirrors.aliyun.com-composer"
第二步:直接删除整个缓存目录。
Linux/macOS:rm -rf ~/.composer/cache/repo/https---mirrors.aliyun.com-composer
Windows:rmdir /s /q "%APPDATA%\Composer\cache\repo\https---mirrors.aliyun.com-composer"
这一步不能用composer clear-cache替代——它只清 ZIP 包和 dist 缓存,对决定“能看到哪些包”的provider-*.json文件【完全无效】。
临时切回官方源验证问题归属
执行composer config -g repo.packagist composer https://packagist.org/,立即切换全局源为官方地址。
再运行composer show vendor/name,如果此时能查到包,说明原镜像确实未同步或配置错误;如果依然 404,问题就出在包名本身、私有源配置或网络策略上。
验证完立刻恢复国内镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,别忘了结尾加/。











