Composer报“Package not found”主因是源未生效:需用composer config -g repos.packagist(≥2.2)或repo.packagist(旧版)确认返回完整JSON,空值或官方地址说明配置失败;项目级repositories字段会屏蔽全局源;packagist.org必须显式设为false且独立置于数组末尾。

Composer 报 “Package not found” 几乎从不因为网络不通,而是它压根没去你配的源里找——源没生效、顺序错、packagist.org 没关,或者元数据根本没刷新。
怎么确认当前用的是哪个源?
别信配置命令有没有报错,只看真实输出:
-
composer config -g repo.packagist(旧版)或composer config -g repos.packagist(≥2.2,注意复数repos)必须返回完整 JSON,例如:{"type":"composer","url":"https://mirrors.aliyun.com/composer/"} - 输出为
null、{}、"https://packagist.org"或空行 → 配置未写入成功 - 项目根目录有
composer.json且含"repositories"字段 → 全局镜像被完全忽略,此时要查composer config repo.packagist(不加-g) -
composer diagnose输出中 “Repo packagist.org:” 后的地址,必须和上面config命令返回值**完全一致**(协议、域名、结尾/都不能差)
为什么私有源配了还是走 packagist.org?
Composer 默认行为是「先连官方源,找不到再 fallback 到 repositories」。除非你显式关掉它:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
{"packagist.org": false}必须是repositories数组里的一个**独立对象**,不能嵌套进其他仓库配置里 - 它必须放在所有私有源之后、数组末尾,例如:
"repositories": [<br> {"type":"composer","url":"https://pkg.myorg.com/"},<br> {"packagist.org": false}<br>] - 写成
"packagist": false、"packagist.com": false或{"type":"composer","url":"...","packagist.org":false}→ 静默忽略,继续走官方源 - VCS 类型(如 Git)仓库不参与元数据索引,只在
require vendor/name时触发拉取;如果 URL 写错、分支不存在、或根目录缺composer.json,就直接 404
镜像源显示正常,但新包/新版本还是装不上?
国内镜像不是实时同步,尤其对刚发布的 dev-main、1.2.3 tag 或未提交到 Packagist 的私有包:
- 运行
composer update --refresh强制重新下载packages.json元数据(不是清缓存) - 访问
https://mirrors.aliyun.com/composer/p2/vendor/name.json(把vendor/name替换为实际包名),看是否返回 404 —— 若是,说明镜像还没同步,不是你本地问题 - 临时切回官方源验证:
composer config -g repos.packagist composer https://packagist.org+composer clear-cache,再试composer require - 别依赖
composer search vendor/name:它只查 Packagist 全局索引,不校验 PHP 版本、扩展、稳定性或你本地的repositories配置
SSL 连接失败导致源“存在但不可用”?
composer diagnose 会真实发起 HTTPS 请求测试 TLS 握手和证书有效性,不只是 ping 通就算数:
- 若报
SSL certificate problem: unable to get local issuer certificate,说明系统信任链里缺企业 CA 证书 - 不要设
secure-http=false或COMPOSER_DISABLE_TLS=1—— 这会禁用全部 HTTPS 校验,审计工具(如composer audit)可能跳过漏洞检测 - 正确做法:
composer config --global cafile /path/to/company-ca.crt,路径必须指向 PEM 格式证书文件 - 私有 Artifactory/Nexus 若用了自签名证书,
composer diagnose不会自动测它;需手动curl -Iv https://your-repo-domain/...验证 TLS 层
最常被忽略的一点:项目级 composer.json 中只要出现空的 "repositories": [],就会让全局镜像彻底失效,且没有任何警告。验证前先确认这个数组是不是真被需要,而不是模板残留。

















