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

内网能用 composer 吗?能,但默认不行
直接答案:composer 本身不依赖外网,但默认配置会连 packagist.org,内网没通就卡在 composer install 或 update 阶段,报错通常是 Could not fetch https://packagist.org/packages.json 或超时。关键不是“能不能装”,而是“怎么让它的请求不往外发”。
换源:改 composer.json 还是全局配置?
优先改全局配置,避免每个项目都动。内网镜像源(比如用 toran-proxy、satis 或 artifactory 搭的)地址一旦确定,执行:
composer config -g repo.packagist composer https://your-intranet-mirror.com
注意:repo.packagist 是固定键名,不能写成 packagist.org;https://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 这种写法在大多数情况下无效。










