“protocol https is not supported”错误源于php curl扩展未启用或编译时未链接openssl,与composer配置无关;需检查php -m | grep curl、curl_version()输出及php.ini中extension=curl和extension=openssl是否启用。

“Your requirements could not be resolved” 不是协议问题,“Protocol https is not supported” 或 “The 'https' protocol is not supported” 才是真·协议不支持错误——它几乎只发生在 PHP cURL 扩展未启用或 OpenSSL 绑定异常时,和 Composer 配置无关。
报错含 “Protocol https is not supported” 的根本原因
这不是 Composer 本身拒绝 HTTPS,而是底层 PHP 的 curl 扩展压根没加载,或虽加载但编译时没链接 OpenSSL。PHP 尝试用 curl 发起 HTTPS 请求时,curl_setopt($ch, CURLOPT_URL, 'https://...') 直接失败,cURL 库返回 “Protocol https is not supported”,Composer 捕获后原样抛出。
- 运行
php -m | grep curl,如果无输出,说明curl扩展未启用 - 运行
php -i | grep -A5 "curl.*version",若显示libcurl/7.68.0 OpenSSL/1.1.1f类似信息,说明已支持 HTTPS;若显示libcurl/7.68.0后无 OpenSSL 字样,说明编译缺失 TLS 支持 - 常见于 Docker Alpine 镜像(musl libc + 无 OpenSSL dev 包)、Windows ZIP 版 PHP(未勾选 OpenSSL 扩展)、或手动编译 PHP 时漏了
--with-openssl
验证并启用 curl + OpenSSL 支持
先确认当前 CLI 环境真实加载的配置:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
php --ini查看加载的php.ini路径 - 打开该
php.ini,检查是否取消注释了extension=curl和extension=openssl(Windows 下是php_curl.dll/php_openssl.dll) - Linux/macOS 若用包管理器安装(如 apt、brew),直接重装带 OpenSSL 的 curl:
sudo apt install php-curl php-openssl(Ubuntu/Debian)brew reinstall php@8.2 --with-openssl(macOS Homebrew) - Alpine 容器内需确保安装
curl-dev和openssl-dev再编译,或改用php:8.2-cli-alpine3.20等已预编译好 OpenSSL 的镜像
为什么换镜像、清缓存、调 timeout 都无效?
这类操作全在 HTTPS 请求发起之后才起作用。而 “Protocol https is not supported” 错误发生在请求构造阶段——连 DNS 解析、TCP 握手、TLS 协商都还没开始,Composer 根本没机会走到网络层。
-
composer config -g repo.packagist设置再正确也没用,因为配置读取后,第一步就是用 HTTPS 去请求镜像源元数据,这步就崩了 -
composer clear-cache清的是已下载的 zip 包和 JSON 元数据,但缓存目录里压根没东西可清 -
COMPOSER_HTTP_TIMEOUT=600等环境变量不会改变协议支持能力 - 临时关校验(
composer config -g secure-http false)也无效,因为问题不在证书校验,而在连 HTTPS 协议栈都没搭起来
快速验证是否修复成功
不用跑 composer install,两行命令即可闭环验证:
- 执行
php -r "print_r(curl_version());",输出中必须含"features" => int 65543(其中 bit 0x1000 表示 HTTPS 支持) - 执行
php -r "var_dump((bool) curl_init('https://mirrors.aliyun.com/composer/'));",返回bool(true)才算真正就绪 - 若第二步仍失败,说明 OpenSSL 库路径不对或版本冲突,需检查
LD_LIBRARY_PATH(Linux)或DYLD_LIBRARY_PATH(macOS)是否指向了旧版 OpenSSL
真正卡在协议不支持时,所有网络优化手段都是隔靴搔痒。盯住 php -m 和 curl_version() 输出,比反复重试 composer install 有用十倍。










