答案:Composer报“Could not find package”或“monolog/monolog 3.6.0 not found”,主因是本地缓存的packages.json元数据未更新,镜像源虽已同步新版本,但Composer仍按过期缓存计算;需用composer config -g repos.packagist验证全局镜像配置(注意复数形式),检查项目级repositories是否覆盖,执行composer update --refresh强制重载元数据,再运行composer update vendor/package即可识别新版本。

报 Could not find package 或 monolog/monolog 3.6.0 not found,八成不是包不存在,而是你本地缓存的元数据没更新——镜像站可能已同步,但 Composer 还在读 15 分钟前的 packages.json。
怎么确认当前真在用你配的镜像?
很多人改完配置就跑命令,结果日志里还是出现 Downloading https://packagist.org/。这不是网络问题,是配置根本没生效。
-
composer config -g repo.packagist输出必须是完整 JSON,如{"type":"composer","url":"https://mirrors.aliyun.com/composer/"};输出为空或报错,说明全局没配成功 - 项目根目录若有
composer.json且含"repositories"字段(哪怕只是空数组[]),就会**完全屏蔽**全局镜像;此时要查composer config repo.packagist(不加-g) - Composer ≥ 2.2 的正确键名是
repos.packagist(复数),写成repo.packagist在新版里会静默忽略,不报错也不生效 - 旧模板里残留的
"url": "https://packagist.phpcomposer.com"已停用,会导致请求 404 卡死,得手动删掉
镜像连得通,但包还是装不上?查元数据是否真同步
别只看网页,Packagist 页面显示 v3.6.0 ≠ 镜像的 p2 接口已同步。最准的方式是直接比对元数据接口返回的版本列表。
- 查官方源最新版:
curl -s https://packagist.org/p2/monolog/monolog.json | jq -r '.packages."monolog/monolog" | keys[]' | sort | tail -3 - 查镜像源(以阿里云为例):
curl -s https://mirrors.aliyun.com/composer/p2/monolog/monolog.json | jq -r '.packages."monolog/monolog" | keys[]' | sort | tail -3 - 若镜像输出缺了最新 tag,就是同步延迟;此时再执行
curl -I https://mirrors.aliyun.com/composer/packages.json,必须返回HTTP/2 200才算镜像本身可用 - 如果返回
SSL certificate problem,问题不在镜像,而在 PHP 的 CA 证书过期或缺失
强制刷新元数据,不是清整个 cache
composer clear-cache 没用——它删的是 ZIP 包和部分 JSON,但 packages.json 默认 15 分钟内不过期,下次 update 仍会立刻重建并复用旧缓存。
- Composer ≥ 2.5:直接运行
composer update --refresh,它只丢弃所有packages.json和provider-*.json,不碰已下载的 ZIP,快且精准 - Composer rm -rf $(composer config --global cache-dir)/repo/https---mirrors.aliyun.com-composer
- Windows 用户路径类似
%APPDATA%\Composer\cache\repo\https---mirrors.aliyun.com-composer,别用clear-cache白忙活 - 临时调试可加
--no-cache -v,看终端输出的真实请求 URL 是否命中你配的镜像地址
新包刚发,等不及同步怎么办?
Packagist 同步有 5–30 分钟延迟,新 tag 提交后搜不到、装不上都正常。临时救急要满足硬条件,不能只改镜像。
- 确认 GitHub 仓库已绑定 Packagist 徽章;没这个图标,基本等于没收录
- 登录
packagist.org→ 右上角「Submit」→ 填入仓库 URL 提交;提交后进包页 → 「Edit」→ 开启Update on Push - 绕过 Packagist 直接从 Git 安装,需同时满足:
composer require vendor/name:dev-main+composer.json中"minimum-stability": "dev"+"prefer-source": true - 注意 Git tag 必须是标准格式:
v1.0.0或1.0.0,不能是release-1.0、v1.0或带空格/下划线
真正卡点从来不是镜像站同步慢,而是本地缓存策略、配置作用域和元数据校验逻辑这三者交织在一起——稍一疏忽,composer update 就会安静地读旧文件,连错误都不报。











