答案是secure-http为true时composer强制拒绝http镜像源,直接抛transportexception;需改用https镜像(如https://mirrors.aliyun.com/composer/)并确保带composer类型标识、url末尾带斜杠,禁用secure-http仅作高危临时方案。

不能切换 HTTP 传输通道——secure-http 为 true 时,Composer 直接拒绝 HTTP 源,不降级、不重试,报 TransportException 是必然结果。
为什么改用 HTTP 镜像源会直接失败
Composer 2.x 默认开启 secure-http,只要仓库 URL 是 http:// 开头,无论是否可达,都会在解析阶段就抛出 Composer\Downloader\TransportException,根本不会发起网络请求。这不是超时或证书问题,是协议校验的硬性拦截。
-
http://packagist.phpcomposer.com、http://mirrors.aliyun.com/composer这类地址已全部失效,阿里云等镜像站早在 2023 年起只提供 HTTPS 接入 - 即使本地搭了 HTTP 代理或反向代理,只要 Composer 配置里写了
http://,就会立刻终止流程 - 错误信息里若含
Unable to use a HTTP connection或明确提示secure-http is enabled,说明就是这个原因
正确做法:必须用 HTTPS 镜像 + 正确配置格式
不是“换协议”,而是按 Composer 的仓库协议规范写对 URL 和参数。漏掉任何一项,它就当配置不存在,默默 fallback 回 https://packagist.org。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- URL 必须以
https://开头,且末尾带斜杠:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(拼路径变成/composer/packages.json→ 404) - type 必须显式传
composer:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 键名只能是
repo.packagist,写成repos.packagist、repositories.packagist或packagist.org都无效 - 验证是否生效:
composer config -g repo.packagist输出必须是完整 JSON 对象,如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}
SSL 连接失败 ≠ 要关 secure-http
如果报错含 certificate verify failed、SSL3_GET_SERVER_CERTIFICATE 或 cURL error 60,说明是证书链问题,不是协议问题。此时禁用 secure-http 不但解决不了,还会让后续所有包下载暴露在中间人攻击下。
- 先查 PHP 用的 CA 路径:
php -r"print_r(openssl_get_cert_locations());",重点关注default_cert_file - 检查系统时间是否偏差超过 5 分钟:
date,误差大会导致证书“未生效” - Windows 常见问题是
openssl.cafile未在php.ini中显式设置,应补上:openssl.cafile="C:\php\cacert.pem" - 证书文件本身可能损坏,可从
https://curl.se/ca/cacert.pem下载最新版替换
真正卡在 SSL 握手或证书校验时,问题不在 Composer 配置,而在 PHP 的 OpenSSL 环境或系统证书信任链。强行切 HTTP 不仅无效,还绕过安全机制,让整个依赖链失去签名验证能力——这点最容易被忽略。










