答案是“package not found”90%因源未生效:repositories顺序错、packagist.org未禁用(需{"packagist.org": false}独立置末)、代理缺https-proxy、vcs配置错或url不合法;composer search仅查packagist全局索引,require则严格按源+stability+元数据匹配。

“Package not found” 和下载超时,90% 不是包真没了,也不是网络真断了,而是 Composer 根本没发请求到你期望的地方——源没生效、代理配错、或 HTTPS 隧道没建起来。
为什么 composer require 找不到包,但 composer search 能搜到
composer search 只查 packagist.org 全局索引,不看你的 repositories、PHP 版本、minimum-stability 或代理配置;而 composer require 是真安装,会严格按 repositories 顺序 + minimum-stability + 实际元数据匹配执行。
- 私有包在
repositories里配了,但{"packagist.org": false}没加、或加错位置(比如写成"packagist": false),Composer 仍优先走官方源,压根不访问你的私有地址 - 包只有
dev-main分支,但项目设了"minimum-stability": "stable"→ 直接跳过,报 “not found”,不是 “版本不匹配” -
composer config repositories输出里还包含https://repo.packagist.org→ 说明packagist.org没禁用,私有源再靠前也白搭 -
{"packagist.org": false}必须是repositories数组里的一个独立对象,且放在私有源之后、数组末尾
composer config -g 配代理为什么还是卡在 “Loading composer repositories”
只配 http-proxy 一定失败。Packagist、GitHub、GitLab 所有仓库全量走 HTTPS,而 Composer 对 HTTP/HTTPS 请求分路由:http-proxy 管 HTTP,https-proxy 才管 HTTPS 的 CONNECT 隧道。漏掉后者,HTTPS 请求 fallback 到直连,结果就是卡住或报 cURL error 28。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
https-proxy的值协议头必须是http://(不是https://,也不是无协议),例如:http://127.0.0.1:7890 - 必须同时运行两条命令:
composer config -g repo.packagist.org.proxy http://127.0.0.1:7890和composer config -g repo.packagist.org.ssl-proxy http://127.0.0.1:7890 - 验证是否生效:
composer config -g --list | grep -E "(http|https)-proxy",两行都得存在且格式合规 - 代理本身要能通:
curl -x http://127.0.0.1:7890 https://repo.packagist.org/packages.json返回 JSON 才算 OK
该用镜像还是代理?别混着来
镜像和代理是互斥方案:镜像靠同步+就近访问,代理靠隧道穿透。选哪个,取决于你网络受限的程度和基础设施是否支持镜像。
- 公司内网或 CI 环境已配阿里云、腾讯云等 Packagist 镜像,且走内网直连 → 加代理反而多一层故障点,延迟更高还容易丢包
- 国内个人开发环境常因 DNS/TLS 被干扰导致直连失败 → 推荐用代理(Clash/Proxyman),或切阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 镜像源 URL 必须以
composer类型声明,不能直接写成https://mirrors.aliyun.com/composer/而不带"type":"composer"(全局配置命令已自动处理) - 旧镜像如
packagist.phpcomposer.com已停用,继续用会 404
VCS 私有包始终 404?元数据读取第一步就失败了
VCS 仓库(Git/GitLab)不参与全局索引,只在你明确 require vendor/name 时才触发拉取。报 404 的真实原因,往往不是网络不通,而是第一步元数据读取失败。
-
type必须写"vcs",写成"git"、"github"或漏掉,整条配置被忽略 - URL 必须是可
git clone的地址,且结尾**不能带 .git 后缀以外的路径**(如https://gitlab.example.com/myorg/utils.git✅,https://gitlab.example.com/myorg/utils.git#main❌) - 目标仓库根目录必须有合法
composer.json,否则 Composer 认为“该包不存在” - 如果用的是自建 GitLab,确认其 API 是否开启、项目是否公开、token 权限是否足够(
read_api和read_repository)
最容易被忽略的一点:所有配置项(repositories 顺序、{"packagist.org": false} 位置、https-proxy 协议头、VCS URL 结尾)都必须精确匹配规则,差一个字符或一个层级,Composer 就静默失效——它不会报错,只会默默走默认逻辑,然后让你花半小时怀疑人生。










