“package not found”主因是配置层干扰:项目级repositories优先级最高,会静默屏蔽全局镜像;需用composer config --list定位问题层,回滚composer.json或~/.composer/config.json,并清理缓存及元数据。

“Package not found”不是包丢了,而是你当前的 composer.json 或全局配置把 Composer 引到了错误的地方——回滚配置文件能快速还原访问路径,但必须知道哪一层被改过、哪一层会覆盖哪一层。
确认是哪个配置层出了问题
Composer 查源时有明确优先级:项目级 repositories > 全局 repo.packagist 配置 > 默认官方源。你看到的“不存在”,往往是因为某一层配置静默屏蔽了其他层。
- 运行
composer config --list,重点看repositories和repo.packagist两行输出;如果项目根目录composer.json里有"repositories": [...]字段(哪怕空数组[]),它就会完全忽略全局镜像设置 - 运行
composer config repo.packagist(不加-g)检查项目级是否覆盖了镜像;再运行composer config -g repo.packagist看全局实际值 - 如果
composer config -g repo.packagist输出为空或仍是https://packagist.org,说明你之前配的阿里云/腾讯云镜像根本没生效
回滚项目级 composer.json 的 repositories
项目根目录的 composer.json 里若误删、误改或误加了 repositories,会导致私有源不生效、镜像被绕过,甚至整个源列表被清空。Git 是最可靠的回滚手段。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 先查改动:
git status composer.json,如果显示modified,说明它被改过 - 回滚到上一个干净版本:
git checkout HEAD -- composer.json(仅恢复该文件) - 如果已 commit 过错误配置,用
git log -n 5 --oneline composer.json找出上一次正确提交的 hash,再执行git checkout <hash> -- composer.json</hash> - 改完别忘了删掉
vendor/和composer.lock(或至少rm composer.lock),否则composer install仍可能按旧 lock 错误解析
回滚全局镜像配置(repo.packagist)
全局配置写在 ~/.composer/config.json 里,composer config -g 命令修改的就是它。误操作后无法通过 --unset 完全还原,因为 repo.packagist 默认不存在——它的“默认值”是启用 packagist.org,而不是留空。
- 想彻底恢复默认行为(即走官方源):
composer config -g --unset repos.packagist,然后手动删掉~/.composer/config.json中残留的"repositories"字段(如果有) - 更稳妥的做法是直接编辑
~/.composer/config.json,删掉整个"repositories"键,保存后运行composer config -g repo.packagist应该无输出 - 如果之前配的是国内镜像但 URL 已失效(如还留着
https://packagist.phpcomposer.com),必须手动清理,composer config -g repo.packagist不会自动修复坏地址
为什么删了配置还报错?缓存和元数据没同步
即使 composer.json 和全局配置都回滚了,Composer 仍可能读着旧的 packages.json 缓存,继续报 “not found”。这不是配置问题,是本地元数据没刷新。
-
composer clear-cache不会强制重载远程元数据,它只清 ZIP 包和部分缓存;15 分钟内未过期的packages.json仍会被复用 - 真正要清的是缓存里的镜像子路径,比如:
rm -rf ~/.composer/cache/repo/https---mirrors-aliyun-com-composer(路径名取决于你之前配的镜像 URL) - 或者跳过缓存,强制刷新元数据:
composer update --refresh --dry-run -v,观察日志中是否出现Downloading https://...,而不是Reading from cache - 验证是否生效:执行
composer require monolog/monolog -vvv,看下载地址是镜像站还是packagist.org
回滚配置只是第一步,真正起效需要三者同步:配置文件还原 + 缓存目录清理 + 元数据强制刷新。最容易被忽略的是项目级 composer.json 中空的 "repositories": [] ——它不报错,但会让所有全局镜像配置彻底失效。










