composer怎么在内网环境使用_composer搭建局域网镜像源

4次阅读

能,但默认连接 packagist.org 导致内网失败;需配置内网镜像源(如 toran-proxy),执行 composer config -g repo.packagist composer https://your-intranet-mirror.com,并确保证书、dns、端口和协议正确。

composer怎么在内网环境使用_composer搭建局域网镜像源

内网能用 composer 吗?能,但默认不行

直接答案:composer 本身不依赖外网,但默认配置会连 packagist.org,内网没通就卡在 composer installupdate 阶段,报错通常是 Could not fetch https://packagist.org/packages.json 或超时。关键不是“能不能装”,而是“怎么让它的请求不往外发”。

换源:改 composer.json 还是全局配置?

优先改全局配置,避免每个项目都动。内网镜像源(比如用 toran-proxysatisartifactory 搭的)地址一旦确定,执行:

composer config -g repo.packagist composer https://your-intranet-mirror.com

注意:repo.packagist 是固定键名,不能写成 packagist.orghttps://your-intranet-mirror.com 必须返回标准的 packages.json 结构,否则 composer 会静默失败或降级回原源。

  • 如果只改单个项目,用 composer config repo.packagist composer https://...(去掉 -g
  • 确认是否生效:运行 composer config -g repo.packagist,应输出你的内网地址
  • 别漏掉 https:// —— http:// 在新版 composer 默认被拒绝,除非显式加 --allow-http

镜像源同步哪些包?require 里写了才拉

内网镜像不是全量同步整个 Packagist,而是按需缓存。第一次 composer install 时,composer 会向镜像源查 packages.json,再根据 composer.json 中的 require 列表逐个请求具体版本元数据和 zip 包。所以:

  • 没在 require 里声明的包,镜像源不会主动同步,也查不到
  • 如果某包在镜像里不存在,composer 默认不会 fallback 到外网(除非你额外配了 packagist.org 为 secondary source)
  • 私有包必须提前推到镜像源,或在镜像配置中显式添加 vcs 类型仓库,否则 composer 根本不认

composer install 卡住?先关掉 https 校验和 DNS 缓存

内网环境常见干扰项不是源本身,而是 TLS 和网络层:

  • 镜像源用的是自签名证书?加 composer config -g secure-http false(仅限可信内网)
  • DNS 解析慢或失败?在 /etc/hosts 里硬写 your-intranet-mirror.com 对应 IP,绕过 DNS
  • 公司代理拦截 HTTPS?检查 composer config -g http-proxy 是否残留了旧代理配置,清掉:composer config -g --unset http-proxy
  • composer install -v 看具体卡在哪一步——是连不上,还是连上了但返回了空响应或 404

最常被忽略的一点:镜像服务本身监听的是 80 还是 443?URL 里写的端口必须和实际一致,https://mirror:8080 这种写法在大多数情况下无效。

text=ZqhQzanResources