必须显式配置 http-proxy 和 https-proxy,否则 Composer 无法连接 packagist.org;它忽略系统环境变量,只认配置文件中的带连字符字段,且 https-proxy 值必须以 http:// 开头。

必须显式配置 http-proxy 和 https-proxy,否则 Composer 会直连 packagist.org 并卡在 “Loading composer repositories” —— 这不是慢,是根本连不上。
为什么 http_proxy 环境变量不生效
Composer 默认完全忽略系统级的 http_proxy、HTTPS_PROXY 或任何环境变量。它只认自己配置文件里的 http-proxy 字段(注意带连字符,不是下划线)。很多用户反复 export 却没效果,根源就在这儿。
- 验证方式:运行
composer config -g --list,检查输出中是否有http-proxy和https-proxy项 - 旧版写法
proxy(无 s)已被弃用,优先以带-的字段为准 - CI/CD 环境里设环境变量更方便,但本地开发请坚持用
composer config -g
https-proxy 必须填 http:// 协议
这是 Composer 的硬性限制:即使你用的是 HTTPS 代理服务,https-proxy 的值也得写成 http://127.0.0.1:7890,不能写 https:// 或 socks5://(除非 Composer ≥ 2.2 且代理明确支持)。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 错误示例:
https://127.0.0.1:7890→ 触发Invalid URI或静默失败 - 正确写法:
http://user%40domain:pass%40word@127.0.0.1:7890(用户名/密码含@、/等需 URL 编码) - NTLM 代理不被原生支持,必须前置
cntlm或px做中转,再让 Composer 连127.0.0.1:3128
代理配对失败时的典型报错和快速验证法
配了代理还卡住?别猜,用最简命令直接验证链路是否通:
- 先确认代理进程在运行,端口没被防火墙拦截:
curl -x http://127.0.0.1:7890 https://packagist.org/packages.json -
file_get_contents(): SSL operation failed→ 代理未透传 TLS 或本地 CA 不被信任;换用http://代理可绕过 -
Connection refused或No route to host→ 代理没开、端口错、或地址漏了http:// -
composer create-project仍慢 → 检查是否漏配https-proxy,它内部也会访问https://repo.packagist.org/packages.json
企业内网该用镜像还是代理
如果公司已部署阿里云、腾讯云或私有 Artifactory 镜像,**别配代理**——直接切源更稳:
- 全局切阿里镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 私有镜像地址示例:
composer config -g repo.packagist composer http://internal-mirror.yourcompany.com/composer - 镜像方案不依赖代理进程存活,无 TLS 证书问题,也避免认证类型不匹配(如 NTLM)
- 代理仅适合临时开发、小团队无镜像能力、或需要访问非 Packagist 的 GitHub/GitLab 包
真正容易被忽略的是:镜像源和代理不可共存。一旦配置了 repo.packagist,Composer 就不再走代理逻辑,所有流量定向到镜像地址。所以选一个,别混着来。

















