“transportexception”或“protocol https is not supported”根本原因是php未启用curl/openssl扩展、composer配置误禁https(secure-http=false或disable-tls=true),或镜像url格式错误(如缺末尾斜杠、type标识缺失)。

Composer 报 “TransportException” 或 “Protocol https is not supported” 不是网络问题,而是协议协商在请求发起前就失败了——要么 PHP 缺 OpenSSL/curl 扩展,要么 Composer 配置强行禁用了 HTTPS,要么镜像源地址本身不合法。
检查 PHP 是否真支持 HTTPS 协议
Composer 依赖 PHP 的 curl 和 openssl 扩展发起 HTTPS 请求。如果这两个没启用,连协议头都构造不出来,根本不会走到“连接超时”或“证书校验失败”那步。
- 运行
php -m | grep curl和php -m | grep openssl,两个都必须有输出 - 若无输出,打开
php.ini(用php --ini确认路径),取消注释extension=curl和extension=openssl(Windows 下是php_curl.dll/php_openssl.dll) - 验证 cURL 是否绑定了 OpenSSL:
php -r "var_dump(curl_version()['features'] & CURL_VERSION_SSL);",输出非0才正常 - Linux/macOS 包管理安装的 PHP,常需额外装
php-curl和php-openssl;Alpine 容器请用预编译好 OpenSSL 的镜像(如php:8.2-cli-alpine3.20)
确认 secure-http 和 disable-tls 配置是否被误关
secure-http 是 Composer 2.x 默认开启的硬性开关:只要设为 true(默认值),任何 http:// 源都会被直接拒绝,不发请求、不重试、不 fallback。而 disable-tls 是更危险的全局降级配置,一旦设为 true,所有 HTTPS 请求都会被强制转成 HTTP,然后必然失败。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 执行
composer config -g secure-http,确认输出是true;如果不是,立即修复:composer config -g secure-http true - 执行
composer config -g disable-tls,如果输出true,立刻删掉:composer config -g --unset disable-tls - 这两项配置若错误存在,换镜像、清缓存、调 timeout 全无效——因为协议层根本没机会跑起来
验证镜像源 URL 是否合法且带 type 标识
国内主流镜像(阿里云、腾讯云、PHPChina)已全面停用 v1 协议和 HTTP 支持。写错 URL 格式会导致 Composer 解析元数据失败,报错看似是协议问题,实则是地址拼接错误或协议不兼容。
- 阿里云镜像必须写成:
https://mirrors.aliyun.com/composer/(末尾斜杠不能少) - 设置命令必须带
composer类型标识:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 键名必须是
repo.packagist(单数、全小写),写成repos.packagist或repositories会静默失败 - 执行后验证:
composer config -g repo.packagist应输出完整 JSON 对象,不是空、null或原始 URL 字符串
区分 PHP 版本与 Composer 版本的兼容边界
PHP ≤ 7.4 的项目无法使用 Composer 2.x,但 Composer 1.x(如 1.10.22)又不支持新版镜像的 v2 协议。这不是配置能绕过的,是协议解析层的硬性断裂。
- PHP 7.4 及以下:只能用
composer self-update 1.10.22+composer clear-cache+ 切回官方源:composer config -g repo.packagist composer https://packagist.org - PHP 8.0+:必须升到
Composer 2.9.6(当前最稳版本),它原生支持所有主流镜像的 v2 协议 - 别信
--ignore-platform-reqs能解决协议问题——它只跳过平台依赖检查,对 HTTPS 协商失败完全无效
最容易被忽略的是:错误日志里出现 cURL error 1 或 Unsupported protocol 时,第一反应不该是换镜像或加参数,而是立刻验证 php -r "print_r(curl_version());" 输出里有没有 OpenSSL 字样。协议栈没搭起来,后面所有配置都是空中楼阁。










