答案:优先将 Composer 配置中的 HTTP 仓库改为 HTTPS 以解决连接被拒问题。首先检查配置 composer config --list,确认 repositories 是否使用 HTTP,如存在则替换为 HTTPS 源,例如阿里云或 Laravel China 的 HTTPS 镜像;随后清除缓存 composer clear-cache。若在安全内网环境可临时关闭 secure-http,但不推荐生产使用,并需确保 PHP 启用 OpenSSL 扩展及正确 CA 证书路径。

当你使用 Composer 安装或更新包时,遇到 "Your configuration does not allow connections to http" 错误,通常是因为 Composer 默认禁止通过不安全的 HTTP 协议访问仓库,以防止潜在的安全风险。解决这个问题的核心是确保使用 HTTPS,或者在明确知晓风险的前提下允许 HTTP 连接。
检查并修改 Composer 配置中的仓库协议
最常见的原因是项目或全局配置中指定了使用 HTTP 的自定义仓库(如私有镜像或国内镜像),而 Composer 2.0+ 默认禁止这类连接。
你可以通过以下命令查看当前配置:
composer config --list重点关注 repositories 配置项。如果发现类似下面的内容:
"repositories": { "packagist": { "type": "composer", "url": "http://packagist.org" } }需要将其改为 HTTPS 版本:
composer config --global repo.packagist composer https://packagist.org替换为官方或可信的 HTTPS 镜像源
如果你在中国大陆,可能为了加速访问使用了 HTTP 镜像(如旧版阿里云、华为云等)。应切换到支持 HTTPS 的现代镜像源。
例如,使用阿里云 HTTPS 镜像:
composer config --global repo.packagist composer https://mirrors.aliyun.com/composer/或使用 Laravel China 的镜像:
composer config --global repo.packagist composer https://packagist.laravel-china.org完成后运行 composer clear-cache 清除缓存,再尝试安装。
临时允许 HTTP(仅限内网或测试环境)
如果你在内网环境中使用私有仓库,并且确认网络安全,可以手动允许 HTTP 连接。但这不推荐用于生产或公网环境。
在项目的 composer.json 中添加如下配置:
"config": { "secure-http": false }这会关闭对 HTTPS 的强制要求。注意:这样做会使你暴露于中间人攻击风险中。
验证 php.ini 是否限制了 OpenSSL
虽然错误信息指向 HTTP 问题,但也可能是 PHP 无法正确处理 HTTPS 请求(如缺少 OpenSSL 扩展或 CA 证书路径错误)。
检查 php.ini 中是否启用:
extension=openssl并确保 curl.cainfo 或 openssl.cafile 指向有效的 CA 证书 bundle:
curl.cainfo = "/path/to/cacert.pem" openssl.cafile = "/path/to/cacert.pem"可以从 https://curl.se/ca/cacert.pem 下载最新证书。
基本上就这些。优先推荐使用 HTTPS 镜像源,避免关闭 secure-http。安全和速度可以兼顾,关键是及时更新配置。










