换镜像源是最有效解法,优先配置阿里云镜像https://mirrors.aliyun.com/composer/并验证可用性,同时处理dist下载直连github、插件绕过及https证书问题。

composer install 被防火墙拦截时,packagist.org 请求失败怎么办
直接换镜像源是最有效解法。国内多数企业防火墙只放行白名单域名,packagist.org 和 github.com 常被阻断,但镜像源走国内 CDN 或代理通道,请求路径不同,容易过审。
实操建议:
- 优先用
composer config -g repo.packagist composer https://packagist.phpcomposer.com(已停用,仅作历史参考)或当前可用的https://packagist.laravel-china.org(注意:该站已于 2023 年停止维护,实际应切换为https://mirrors.aliyun.com/composer/) - 确认镜像可用性:运行
curl -I https://mirrors.aliyun.com/composer/packages.json,返回200 OK才算真正通 - 若公司强制要求所有流量经统一代理,需额外配置
http_proxy环境变量,且确保 Composer 能读取它(某些旧版需要加--no-plugins避免插件干扰)
为什么 composer update 仍会访问 GitHub?
因为很多包的 dist 下载地址写死为 github.com,即使换了 packagist 镜像,Composer 仍会按 composer.json 中的 dist.url 直连下载 ZIP 包。这是最常被忽略的「二次拦截」点。
解决办法:
- 全局启用国内 dist 镜像:执行
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/ - 对单个项目,可手动在
composer.json里加"repositories": [{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}] - 检查是否启用了
fxp/composer-asset-plugin类插件——它们常绕过镜像设置直连 GitHub,建议卸载并改用composer/installers+ 官方 asset-packagist 替代
composer create-project 卡在 downloading 后无响应
本质是模板项目(如 Laravel)的 composer.json 里声明了大量 GitHub 仓库依赖,且默认不走镜像。此时不是网络慢,而是连接被静默丢弃,超时后才报错。
快速绕过方式:
- 先用
git clone拉下框架代码(比如git clone --depth=1 https://gitee.com/laravel/framework.git),再进目录跑composer install --no-scripts - 临时禁用 VCS:设环境变量
COMPOSER_DISABLE_NETWORK=1,再配合--prefer-dist和本地vendor缓存复用 - 如果允许离线部署,提前在另一台能联网的机器上跑
composer install --no-dev --prefer-dist,打包整个vendor目录带过去
HTTPS 证书校验失败或 TLS 版本不兼容
部分企业防火墙中间人代理会替换 HTTPS 证书,导致 Composer 报 cURL error 60: SSL certificate problem 或 TLS 1.0 is disabled。这不是配置问题,是握手阶段被干预。
安全前提下的应对措施:
- 用
composer config -g secure-http false临时降级到 HTTP(仅限内网可信环境,且需确认镜像源同时提供 HTTP 入口) - 若必须走 HTTPS,导出防火墙 CA 证书(通常管理员可提供),然后设
export COMPOSER_CAFILE=/path/to/company-ca.crt - 避免用
--disable-tls:该参数已被废弃,新版 Composer 不识别,强行加会导致命令解析失败
真正卡住的地方往往不在镜像配置本身,而在 dist URL、插件行为、CA 信任链这三处。调不通时,先 composer install -v 看最后一条请求是什么,再决定动哪根线。










