composer安装失败90%是网络层问题,需先验证dns(如nslookup repo.packagist.org 1.1.1.1)、配全http-proxy和https-proxy(均须http://开头且密码url编码)、处理ntlm代理需中转,最后清缓存。

Composer 安装失败,90% 不是包本身或 composer.json 写错了,而是卡在 DNS、代理或 TLS 握手这一层——它根本没连上 packagist.org 或镜像源。
为什么只配 http-proxy 一定失败
因为 Packagist 所有元数据请求(如 /packages.json)全走 HTTPS,而 http-proxy 只处理 HTTP 请求;https-proxy 才负责建立 CONNECT 隧道转发 HTTPS 流量。漏掉后者,Composer 就把 HTTPS 请求扔给系统直连,在多数受限网络下等于超时或被拦截。
-
https-proxy的值必须仍是http://开头(比如http://127.0.0.1:8080),填https://或省略协议头会静默失效 - 两条命令必须都执行:
composer config -g http-proxy http://127.0.0.1:8080和composer config -g https-proxy http://127.0.0.1:8080 - 验证是否生效:
composer config -g --list | grep -E "(http|https)-proxy",输出必须有两行且格式正确
https-proxy 值含 @ 或 / 就报错?
Composer 解析代理 URL 时,只认第一个 @ 为用户/密码分隔符,后面的内容全被截断。例如密码是 pa@ss/word,不编码就填成 http://user:pa@ss/word@127.0.0.1:8080,实际解析出的密码只有 pa,剩下部分被丢弃,最终报 Invalid URI supplied 或跳过代理。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 必须对用户名或密码单独做
rawurlencode()编码:php -r "echo rawurlencode('pa@ss/word');"→ 得到pa%40ss%2Fword - 完整地址写成:
http://user:pa%40ss%2Fword@127.0.0.1:8080 - 域名里带
@(如proxy@corp.com)同样要编码,否则一样解析失败
公司用 NTLM 代理(Windows 域环境)怎么办
Composer 原生完全不支持 NTLM 认证,设了任何 http-proxy 都会返回 407 Proxy Authentication Required 或 Unable to connect to http://repo.packagist.org——这不是配置姿势问题,是协议层根本不通。
- 唯一可行解法:本地起中转代理,比如
cntlm或px,让它监听127.0.0.1:3128并处理 NTLM - 再让 Composer 连这个本地地址:
composer config -g http-proxy http://127.0.0.1:3128和composer config -g https-proxy http://127.0.0.1:3128 - 别试
secure-http false或关ssl-verifypeer,这解决不了407,反而引入安全风险
DNS 污染导致 Could not resolve host
错误提示里出现 Could not resolve host,说明请求压根没发出去,卡在域名解析层。别急着改 composer.json 或清缓存。
- 先运行
nslookup repo.packagist.org 1.1.1.1(用 Cloudflare DNS 强制绕过本地污染),如果返回 IP,说明你本地 DNS 被污染 - 临时修复:Linux/macOS 往
/etc/resolv.conf顶行加nameserver 1.1.1.1;Windows 在网络适配器手动设 DNS - 最快验证方式:用
nslookup查到的 IPv4 地址(如104.21.46.17),追加到/etc/hosts(macOS/Linux)或C:\Windows\System32\drivers\etc\hosts(Windows):104.21.46.17 repo.packagist.org
最常被忽略的是:即使代理和镜像都配好了,composer clear-cache 这一步仍可能被跳过——旧失败记录还在缓存里,重试照样走原地址。










