composer代理配置必须同时设http-proxy和https-proxy,因所有元数据接口均走https,仅配http-proxy无效;https-proxy值须以http://开头,且需清空镜像源(composer config -g --unset repo.packagist)才能生效。

Composer代理配置必须同时设 http-proxy 和 https-proxy
只配 http-proxy,Composer 仍会直连 Packagist——因为所有元数据接口(packages.json、p2/xxx.json、dist 下载链接)全走 HTTPS,而 http-proxy 对 HTTPS 请求完全无效。漏掉 https-proxy 的典型表现是卡在 “Loading composer repositories”,无报错、无超时提示,实际请求已 fallback 到直连并被防火墙拦截。
关键细节:
-
https-proxy的值必须是http://协议开头(哪怕代理本身监听 TLS 端口),填https://或漏协议头会导致静默失败 - 用户名/密码含
@、/、:必须 URL 编码,例如pa@ss/word→pa%40ss%2Fword - Windows 下若报
Could not write to file,检查%APPDATA%\Composer\config.json目录权限
代理不能和镜像源混用
设了 repo.packagist 镜像(如阿里云、腾讯云地址),http-proxy 和 https-proxy 就彻底失效——Composer 会跳过代理逻辑,直接向镜像站发起 HTTPS 请求。国内用户卡住的主因,90% 是同时配了镜像和代理。
要走代理,必须清空镜像:
- 执行
composer config -g --unset repo.packagist(注意不是repos.packagist) - 再确认
composer config -g --list | grep -E "(http|https)-proxy"输出两行且格式正确 - 镜像站地址仍是 HTTPS,如果公司策略强制所有 HTTPS 流量过代理,那即使用了镜像,没配
https-proxy一样连不上
压缩传输层不在 Composer 默认链路里
Composer 下载器(CurlDownloader)只负责把 HTTP 响应体落地为临时文件,不介入解压;解压由安装器(LibraryInstaller)调用 ArchiverInterface 完成。这个链路封闭,无法注入 Zstd/LZ4 解压逻辑。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
想用 Zstd/LZ4 压缩包(如 .tar.zst),唯一可行路径是:跳过默认解压,接管 installCode() 方法。这意味着:
- 私有仓库返回的 dist URL 必须是
.tar.zst或.tar.lz4,而非.zip或.tar.gz - 自定义
Installer类中需用ext-zstd或ext-lz4扩展手动解码,再交给PharData提取 -
compress.zstd不是 PHP 内置流封装协议,file://或http://URL 无法直接用fopen("compress.zstd://...")
TLS 握手失败常被误判为网络慢
代理配好后仍超时或报 cURL error 28、SSL certificate problem,大概率是证书信任问题——尤其在企业内网,根证书未被 PHP 识别。
修复方式很直接:
- 运行
composer config -g cafile /path/to/your-root.pem指向公司签发的根证书(不要用系统默认的ca-bundle.crt) - 同步调高超时:
composer config -g http.connect_timeout 60和composer config -g http.timeout 600 - WSL2 用户还需注意主机与子系统时间不同步,运行
sudo hwclock -s同步时间
压缩算法和代理本身不解决 TLS 信任问题,但它们叠加后会让这类错误更难定位——因为表象都是“卡住”或“连接失败”。










