“package not found”八成是包名拼写错误、大小写不符或未配置repositories导致composer默认只查packagist.org;包名须与packagist url完全一致,repositories启用后需显式保留packagist.org且git仓库composer.json中name字段必须严格匹配。

“Package not found”八成不是网络问题,而是包名写错、大小写不对,或根本没告诉 Composer 去哪找——它默认只查 packagist.org,其他地方一概无视。
包名拼写和大小写必须和 Packagist 页面 URL 完全一致
Composer 不做模糊匹配,也不自动纠错。你输 monolog/monolog 能装,输 Monolog/Monolog 或 monolog 就 404;spatie/laravel-backup 写成 spatie/backup 同样失败。
- 打开 https://www.php.cn/link/94953b1a99c64501ceb078724697224f(把
vendor/name换成你写的完整包名),看是否返回 404 页面 - 别从网页、聊天记录里复制包名——里面可能混入全角斜杠
/、不可见空格或零宽字符;建议在纯文本编辑器里重打一遍再粘贴 - 运行
composer search --only-name guzzle,第一列输出的就是可直接require的准确包名,复制最安全
加了 repositories 却连 monolog/monolog 都装不上
只要你在 composer.json 的 repositories 字段里写了任意一条记录(哪怕只加了一个 Git 地址),Composer 就会默认关闭 packagist.org 自动注入。结果是:私有包没配对,公共包也全失效。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
"packagist": false必须作为repositories数组的第一项,否则无效 - 第二项起必须显式写上官方源:
{"type": "composer", "url": "https://www.php.cn/link/ec811d0d775adc62776ba80fadd4ed19"},不能用package或artifact类型替代 - 私有 Git 仓库要单独加一条:
{"type": "vcs", "url": "https://gitlab.internal.company.com/group/pkg"} - 改完立刻执行
composer clear-cache,否则旧缓存还在用“无 packagist”的配置
Git 仓库直连但提示 Package not found
能 clone 到代码 ≠ Composer 能识别为有效包。关键在于 Git 仓库根目录的 composer.json 是否存在,且其中 name 字段值是否严格等于你 require 时写的完整包名。
-
repositories中必须写"type": "vcs",URL 必须是可git clone的地址,例如"https://github.com/username/repo.git",不能是网页链接https://github.com/username/repo - 该 Git 仓库根目录必须有
composer.json,且其"name"字段值为"username/repo"(与require完全一致) - 删掉
vendor/和composer.lock,再跑composer update username/repo,避免缓存干扰
新 tag 提交后立刻 install 却报错
Packagist 同步存在 5–30 分钟延迟,新 tag 暂不可搜、不可装。这不是你配置的问题,也不是网络挂了,只是索引还没刷进去。
- 确认方式只有两个:访问 https://www.php.cn/link/94953b1a99c64501ceb078724697224f 看是否 404;或运行
composer show -p vendor/name输出是否为空 - 临时救急:登录 packagist.org → 右上角「Submit」→ 填入 GitHub/GitLab 仓库 URL 提交
- 长期方案:提交成功后,进入该包页面 →「Edit」→ 开启 Update on Push(即配置 webhook)
- 确保 Git tag 是标准格式:
v1.0.0或1.0.0,不能是release-1.0、v1.0或带空格/下划线
最容易被忽略的是:加了 repositories 后忘了显式启用 packagist.org,或者 Git 仓库里 composer.json 的 name 字段漏写 vendor 名——这两个点一旦出错,报错信息完全一样,但原因天差地别。










