Composer网络问题本质是无法访问packagist.org,解决核心是避免远程解析:优先配国内镜像源;严格内网部署私有Packagist;完全离线则用本地path仓库预装包。

这个问题本质是 Composer 尝试访问 packagist.org(或其它远程仓库)时网络不通,常见于无外网权限的内网服务器、防火墙拦截、DNS 解析失败,或完全离线环境。核心思路是:让 Composer 不依赖外部域名解析,改用本地源或预下载包。
配置国内镜像源(适合有内网但可连国内镜像的场景)
如果内网能访问阿里云、腾讯云等国内镜像站(它们不走 packagist.org 域名),可全局或项目级切换源:
- 全局替换(推荐给开发机或跳板机):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 项目内替换(不影响其他项目):
composer config repo.packagist composer https://mirrors.tencent.com/composer/ - 验证是否生效:
composer config -g repo.packagist 或查看项目根目录下的 composer.json 中是否新增了 "repositories" 字段
使用私有 Packagist(适合严格内网、需长期稳定管理的团队)
部署一个内部 Packagist 服务(如 Satis 或 Private Packagist),把所需包提前同步进去。之后所有机器都指向这个内网地址:
- 在 composer.json 中声明私有源:
"repositories": [{"type": "composer", "url": "http://packagist.internal"}] - 确保内网 DNS 能解析 packagist.internal,或直接在 /etc/hosts 添加映射(如 10.0.1.5 packagist.internal)
- 禁用默认 packagist:
"packagist.org": false 加入 repositories 数组末尾
完全离线:预下载 + 本地仓库(适合无任何外网通道的环境)
在有网机器上准备好所有依赖,打包带到离线机:
- 用 composer install --no-install 生成锁文件,再用 composer archive 或手动收集 vendor/ 和 composer.lock
- 更可靠的方式:用 Composer Archive 工具或 composer create-project --no-install 导出完整依赖树
- 离线机上,将包放在本地路径(如 /data/composer-packages),然后配置本地仓库:
"repositories": [{"type": "path", "url": "/data/composer-packages/*"}] - 运行 composer install --no-interaction --prefer-dist 即可离线安装
基本上就这些。关键不是“怎么连上”,而是“让它别去连”。根据你的网络边界选一种方式,多数内网问题靠镜像源就能解决;真正隔离环境就走本地 path 或私有仓库。不复杂但容易忽略 DNS 和 hosts 配置细节。










