必须同时设置 http-proxy 和 https-proxy 且均以 http:// 开头,否则 composer install 会卡在“loading composer repositories”;https-proxy 值不能用 https://;含 @ 或 / 的密码需 url 编码;ntlm 代理需通过 cntlm 等中转;验证代理须用 curl -x 逐层测试。

必须同时设置 http-proxy 和 https-proxy,且两者值都得是 http:// 开头;漏掉任一个,composer install 就会卡在 “Loading composer repositories” —— 不是慢,是根本没走代理。
为什么只配 http-proxy 不行
Composer 默认所有仓库(包括 Packagist、GitHub)都走 HTTPS,http-proxy 仅对 HTTP 请求生效,对 HTTPS 请求完全无效。结果就是:HTTP 请求走代理,HTTPS 请求直连,而后者恰恰是核心依赖发现环节。
-
composer install卡住时,日志里看不到明显报错,实际是 HTTPS 请求被防火墙拦截或超时 - 验证是否生效:运行
composer config --global --list | grep -E "(http|https)-proxy",必须看到两行输出 - 填
https://127.0.0.1:8080会静默失效——Composer 强制要求https-proxy的值也用http://协议
http://user:pass@proxy:port 里密码含 @ 或 / 怎么办
Composer 解析代理 URL 时,只认第一个 @ 为用户/密码分隔符,后面的内容全被截断。比如 pa@ss/word 不编码直接填,实际解析出的密码只是 pa,剩下 ss/word@proxy:port 被丢弃,最终报 Invalid URI supplied 或静默跳过代理。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须对用户名或密码单独做 URL 编码:
php -r "echo rawurlencode('pa@ss/word');"→ 得到pa%40ss%2Fword - 完整地址写成:
http://user:pa%40ss%2Fword@127.0.0.1:8080 - 域名里带
@(如dev@corp.com)同样要编码,否则一样被截断 - 环境变量方式(
http_proxy=)也适用该规则,不能跳过
公司用 NTLM 代理(比如 Windows 域控),407 Proxy Authentication Required 怎么破
Composer 原生不支持 NTLM 认证,设了任何 http-proxy 都会返回 407 或 Unable to connect to http://repo.packagist.org。这不是配置姿势问题,是协议层不兼容。
- 唯一可行解法:在本地起中转代理,比如
cntlm或px,让它处理 NTLM,再让 Composer 连http://127.0.0.1:3128 - 另一个选择:找 IT 确认是否有免认证的 bypass 代理(常叫 HTTP 出口代理),直接配那个地址
- 别试
disable-tls或关ssl-verifypeer,这解决不了407,反而引入安全风险 - 临时关闭代理验证:执行
composer config --global http-proxy '' && composer config --global https-proxy '',完事记得恢复
代理设好了还是卡住?快速定位三步法
现象都是“没报错但不动”,本质是链路里某环断了。别靠猜,用 curl 逐层验证:
- 先确认代理进程在运行、端口没被防火墙拦:
curl -x http://127.0.0.1:8080 -I https://packagist.org/packages.json - 如果返回
Connection refused,检查代理是否启动、端口是否填错、地址是否漏了http:// - 如果返回 SSL 错误(如
cURL error 60),说明代理未透传 TLS 流量,或本地 CA 证书不被信任;换用http://代理可绕过此问题 - 注意:Composer 不读系统
HTTP_PROXY环境变量,只认自己配置里的http-proxy字段——这点最容易被忽略
真正卡人的从来不是命令怎么写,而是代理链路里任意一环(本地代理进程、中间网关、DNS 解析、CA 信任)出了问题,现象却高度一致:安静地卡住。动手前,先用 curl -x 过一遍,比反复重试 composer install 有效得多。










