必须同时配置 http-proxy 和 https-proxy 且均以 http:// 开头,否则 https 请求(如 packagist.org)失败;更推荐直接切换国内镜像源并确保 url 末尾含 /。

composer config -g http-proxy 单配无效
只设 http-proxy,composer install 依然卡在 Loading composer repositories 或报 cURL error 35。Packagist 全量走 HTTPS,而 http-proxy 只处理 HTTP 请求,对 https://packagist.org 这类地址完全不起作用。
必须同时配置两个字段:
composer config -g http-proxy http://127.0.0.1:8080composer config -g https-proxy http://127.0.0.1:8080
https-proxy 的值必须是 http:// 开头,哪怕代理监听的是 TLS 端口(如 https://127.0.0.1:8443)——Composer 不支持 https:// 协议的代理地址,填错会静默 fallback 到直连。
验证命令:composer config -g --list | grep -E "(http|https)-proxy",输出里必须同时出现两行,且 URL 格式正确。
https-proxy 值填错的典型现象
填成 https://127.0.0.1:8080、漏协议头(如 127.0.0.1:8080)、或密码含 @// 未编码,都会导致无明确报错但所有 HTTPS 请求失败。
常见表现:
-
Resolving dependencies卡住,几小时不动 -
Failed to decode response(实际是空响应或 HTML 登录页) -
curl -I https://packagist.org/packages.json能通,但composer install不行
修复方法:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 用
php -r "echo rawurlencode('pa@ss/word');"生成正确编码 - Windows 下若提示
Could not write to file,检查%APPDATA%\Composer\config.json是否可写 - 公司 NTLM 代理(如域环境)需用
cntlm或px中转,Composer 原生不支持
镜像源比代理更简单可靠
在腾讯云、阿里云等国内 CVM 上,composer install 慢或失败,90% 不是网络不通,而是 DNS 解析慢或 TLS 握手卡在海外节点。强行配代理反而引入额外故障点。
推荐一步到位切镜像:
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/- 立刻执行
composer clear-cache - 验证:
composer config -g repo.packagist输出必须是完整 JSON,且url字段以/结尾
注意:composer.json 里若已有 repositories 字段,它会覆盖全局配置,得先删掉或注释掉;末尾少一个 /,Composer 就会拼出非法路径并静默 fallback 到官方源。
代理与镜像混用时的隐藏陷阱
企业代理常劫持 HTTPS 响应,把 https://mirrors.aliyun.com/composer/packages.json 重定向到登录页或返回 text/html,而 Composer 不校验 Content-Type,解析 JSON 失败后直接放弃该镜像,退回到过期缓存甚至官方源。
快速定位:
-
curl -I -v https://mirrors.aliyun.com/composer/packages.json→ 查看是否返回HTTP/2 200和Content-Type: application/json -
curl --noproxy "*" -I https://mirrors.aliyun.com/composer/packages.json→ 若加了--noproxy "*"才正常,说明代理是根因 -
composer diagnose报错别信,它只测https://packagist.org,和你配的镜像无关
真正生效的验证只有两个:curl -I 返回 200 + composer config -g repo.packagist 输出正确 JSON。










