可通过设置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 和响应头,结合tcpdump或Wireshark观察实际连接目标 IP - 例如:运行
PHP_IPV4=1 composer require monolog/monolog -v 2>&1 | grep "Resolving",再比对解析出的 IP 是否全为 IPv4 地址
基本上就这些。环境变量方式兼容大多数 Composer 版本(≥1.0),且不影响全局配置,最稳妥也最常用。










