欢迎您访问新疆栾骏商贸有限公司,公司主营电子五金轴承产品批发业务!
全国咨询热线: 400-8878-609

新闻资讯

行业动态

如何强制 Composer 使用 IPv4 或 IPv6 进行网络连接?

作者:裘德小鎮的故事2025-12-26 00:00:00
可通过设置PHP_IPV4=1或PHP_IPV6=1环境变量强制Composer使用IPv4或IPv6,Linux/macOS用PHP_IPV4=1 composer install,Windows CMD用set PHP_IPV4=1 && composer install,PowerShell用$env:PHP_IPV4="1"; composer install,该方法兼容Composer≥1.0且无需修改配置。

可以通过设置环境变量来强制 Composer 使用 IPv4 或 IPv6,无需修改源码或配置文件。

使用 PHP_IPV4 环境变量强制 IPv4

在运行 Composer 命令前,设置 PHP_IPV4=1 环境变量。Composer 会通过 PHP 的流上下文自动限制 DNS 解析和连接只走 IPv4。

  • Linux/macOS:执行 PHP_IPV4=1 composer install
  • Windows(CMD):执行 set PHP_IPV4=1 && composer install
  • Windows(PowerShell):执行 $env:PHP_IPV4="1"; composer install

使用 PHP_IPV6 环境变量强制 IPv6

类似地,设置 PHP_IPV6=1 可让 Composer 优先尝试 IPv6 连接(前提是系统和网络支持)。

  • Linux/macOS:PHP_IPV6=1 composer update
  • 注意:若本地没有可用 IPv6 路由,命令可能超时或失败,需确认网络环境支持

临时禁用 IPv6(等效于强制 IPv4)

如果环境变量方式不生效(如旧版 Composer),可直接关闭系统级 IPv6(仅限调试):

  • Linux:临时禁用 sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
  • macOS:IPv6 通常无法全局禁用,建议优先用 PHP_IPV4=1
  • 不推荐长期禁用,仅用于验证是否为 IPv6 连接问题

验证当前使用的 IP 协议

Composer 本身不输出协议信息,但可通过抓包或日志辅助判断:

  • -v 参数查看详细请求 URL 和响应头,结合 tcpdumpWireshark 观察实际连接目标 IP
  • 例如:运行 PHP_IPV4=1 composer require monolog/monolog -v 2>&1 | grep "Resolving",再比对解析出的 IP 是否全为 IPv4 地址

基本上就这些。环境变量方式兼容大多数 Composer 版本(≥1.0),且不影响全局配置,最稳妥也最常用。