国内镜像不会自动同步新包,必须先在packagist.org注册成功,镜像才会在1–6小时内缓存元数据和zip包;直接向镜像提交包会返回405或404;发布需满足github仓库含合规composer.json、语义化tag及packagist手动提交。

你的包根本不会“自动同步”到国内镜像
国内镜像(如阿里云、腾讯云)不接收上传,也不托管新包——它们只缓存 Packagist.org 上已存在且已被索引的包。你自己的包必须先在 Packagist 官方注册成功,镜像才会在后续同步周期里拉取元数据和 ZIP 包。直接往镜像源提交 URL 或 zip 文件,405 Method Not Allowed 或 404 是必然结果。
发布流程必须走 Packagist 官方入口
这是唯一有效路径,跳过它一切配置都白搭:
- GitHub 仓库根目录要有合法
composer.json,含正确格式的name字段(如myname/my-package),且不能有vendor/、composer.lock等无关文件 - 打语义化 tag(如
v1.0.0),并git push --tags - 登录
packagist.org,点击Submit,粘贴 GitHub 仓库 URL - 提交后立刻触发首次抓取;之后每次 push 新 tag,Packagist 的 webhook 会自动更新,无需人工干预
国内用户配镜像后仍找不到包?先查这三件事
常见现象是执行 composer require myname/my-package 报 could not find package,问题往往不在镜像本身:
- 检查
packagist.org上是否真有该包页面,URL 是否为https://packagist.org/packages/myname/my-package - 运行
composer config -g repo.packagist,输出必须是完整 JSON,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"};空、null或报错 = 镜像未生效 - 用
curl -I https://mirrors.aliyun.com/composer/p2/myname/my-package.json直接测镜像节点——返回200才说明包已同步;若404,等几小时再试(镜像同步有延迟,通常 1–6 小时)
想完全控制同步节奏?得自己搭私有源
如果你无法等待镜像同步,或需要立即推送未公开的包,Packagist + 公共镜像这条路就不适用了。此时应放弃“国内镜像”幻想,改用私有方案:
- 用
Satis或Private Packagist搭建内部 Composer 源,把 GitHub 私有库或预编译 ZIP 推进去 - 或用 Coding、腾讯云 CODING 的
Composer 制品库,配置代理 + 自动同步策略,但需手动维护 GitHub Actions 流水线 - 项目中通过
composer config repo.my-private composer https://your-satis.example.com显式添加,不再依赖packagist键名
真正的难点从来不是“怎么配”,而是理解镜像不生产元数据——它只是个带缓存的只读镜像。包没上 Packagist,国内镜像连它的名字都不会知道。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











