Composer代理需分别配置http-proxy和https-proxy,HTTPS请求必须配https-proxy;优先用composer config命令设置,检查是否支持HTTPS隧道,国内镜像更稳定但有同步延迟。

composer install 走代理但没生效?先确认代理类型和配置位置
Composer 本身不内置 HTTP 代理 UI,它依赖系统级或 Composer 自身的配置项。最常踩的坑是:设了环境变量却没生效,或者用 http-proxy 配置了 HTTPS 请求——而实际请求走的是 HTTPS(比如 packagist.org),结果被忽略。
-
http-proxy只对 HTTP 协议生效;HTTPS 请求必须单独配https-proxy - 全局配置写在
~/.composer/config.json(Linux/macOS)或%USERPROFILE%\AppData\Roaming\Composer\config.json(Windows) - 项目级配置优先于全局,写在项目根目录的
composer.json里加"config"字段 - 环境变量(如
HTTP_PROXY、HTTPS_PROXY)会覆盖 config.json 中同名设置,但大小写敏感:Linux/macOS 区分大小写,Windows 不区分
用 config 命令快速设代理,别手改 config.json
手动编辑 JSON 容易格式出错,composer config 是最稳的方式。注意命令作用域,默认是当前项目;加 -g 才是全局。
- 设全局 HTTP + HTTPS 代理:
composer config -g http-proxy http://127.0.0.1:8080
composer config -g https-proxy http://127.0.0.1:8080 - 如果代理要认证,URL 里带上用户密码:
http://user:pass@127.0.0.1:8080 - 取消某个代理:
composer config -g --unset http-proxy - 查当前生效配置:
composer config -g --list(看http-proxy和https-proxy是否都存在且非空)
代理连不上 packagist.org?检查证书和协议兼容性
很多公司代理或本地工具(如 Clash、Proxifier)默认只转发 HTTP,不处理 HTTPS 的 CONNECT 隧道,导致 Composer 卡在 “Resolving dependencies” 或报 cURL error 35。
Easycart是一款专业的电子商务网站程序,为各大企业提供最适合的电子商务网络销售网站前后台方案。Easycart是Easycart开发团队通 过对现代电子商务以及消费者购物方式进行深入研究,充分了解企业以及消费者的需求后研发的现代电子商务行业使用的程序。面向不同的企业品牌、代理商提出了 不同的方案,用户可根据企业自身特点,调整后台设置,创建最适合自己的网店模版。易学、易用、易管理、易推广,高效
- 错误现象:
Failed to decode response: file_get_contents(): SSL operation failed或直接超时 - 验证代理是否支持 HTTPS 隧道:用
curl -x http://127.0.0.1:8080 -I https://packagist.org/packages.json测试 - 某些代理(如旧版 Squid)需要显式开启
connect_ports;Clash 则需确保规则里包含DOMAIN-SUFFIX,packagist.org,PROXY - 若代理不支持 HTTPS 隧道,临时方案是切到 HTTP 源(不推荐长期用):
composer config -g repo.packagist composer https://packagist.org→ 改成http://packagist.org(仅调试用)
国内镜像比代理更稳?但要注意版本同步延迟
用代理本质是绕过网络限制,但如果你只是想加速安装,国内镜像(如阿里云、腾讯云)通常延迟更低、稳定性更高,且不需要处理证书或隧道问题。
- 设阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 镜像不是实时同步,新发布的包可能有 5–30 分钟延迟;遇到
Package not found但确定已发布,先等一会儿再试 - 私有包或自建 Satis 仓库不受镜像影响,仍走原始配置;镜像只代理 packagist.org 官方源
- 临时切回官方源:
composer config -g --unset repo.packagist
http-proxy 和 https-proxy 的作用边界——这两个地方漏一个,就等于没配。









