phpinfo() 是最直接的内置诊断工具,可通过搜索 --disable-ipv6、检查 Registered PHP Streams 中 ipv6 流、调用 net_get_interfaces() 查 AF_INET6 地址、stream_get_transports() 查 tcp6/udp6 及 php-config --configure-options 验证 IPv6 支持。

如果您在调试 PHP 环境时需要确认其是否具备 IPv6 支持能力,phpinfo() 是最直接的内置诊断工具之一。它可完整呈现 PHP 的编译配置、启用模块及网络协议栈相关参数。以下是多种验证方法:
一、通过 phpinfo() 页面查找 IPv6 相关关键词
phpinfo() 输出内容中包含所有编译时启用/禁用的选项,IPv6 支持状态取决于 configure 脚本中是否传入了 --enable-ipv6(默认通常开启)或 --disable-ipv6(显式关闭)。该信息位于“Configure Command”行及“Additional .ini files parsed”下方的编译摘要区域。
1、新建一个 PHP 文件(如 info.php),写入 并保存至 Web 服务器可访问路径。
2、通过浏览器访问该文件 URL,加载后按 Ctrl+F 搜索关键词 --disable-ipv6。
立即学习“PHP免费学习笔记(深入)”;
3、若搜索结果为空且存在 --enable-ipv6 或未出现任何 IPv6 禁用标记,则表明编译时启用了 IPv6 支持。
4、进一步查看 “Registered PHP Streams” 行,确认其中是否包含 tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2, tlsv1.3, http, https, ftp, ftps, compress.zlib, php, file, data, phar, zip, glob, filter, http, https, ftp, ftps, ssh2, x509, imap, pop3, nntp, smtp, telnet, dict, gopher, irc, ldap, ldaps, pop3s, imaps, nntps, smtps, rtsp, rtmp, rtmpt, rtsp, mms, mmst, mmsh, rtsp, rtp, sctp, ipv6 等含 ipv6 字样的流协议(部分版本会显式列出)。
二、检查 PHP 运行时网络接口与地址族支持
PHP 7.3+ 提供 net_get_interfaces() 函数,可枚举本地网络适配器及其绑定的 IPv4/IPv6 地址,间接反映内核与扩展对 IPv6 的实际承载能力。该方法不依赖编译参数,而是验证运行时协议栈可用性。
1、在 PHP 脚本中调用 var_dump(net_get_interfaces()); 并执行。
2、检查输出数组中每个接口的 unicast 子数组,寻找 family 值为 AF_INET6 的条目。
3、若任意接口存在 address 字段值为合法 IPv6 格式(如 2001:db8::1 或 ::1),说明系统已启用 IPv6 协议栈且 PHP 可识别。
4、若返回 false 或所有 unicast 条目中 family 均为 AF_INET,则可能因内核禁用 IPv6、PHP 编译时排除相关支持,或 SELinux/AppArmor 等安全策略限制了网络接口读取权限。
三、使用 stream_get_transports() 辅助判断
PHP 的流传输层(transport layer)决定了 socket 创建时可指定的地址族类型。stream_get_transports() 返回当前可用的传输协议列表,其中 tcp 和 udp 的 IPv6 变体是否注册,是判断底层支持的关键指标。
1、执行 print_r(stream_get_transports()); 获取全部可用传输协议名。
2、观察输出中是否包含 tcp6 和 udp6 —— 这两个名称明确表示对应 IPv6 地址族的 TCP/UDP 传输支持。
3、若仅存在 tcp 和 udp 而无带 6 后缀的变体,说明 PHP 扩展未启用 IPv6 socket 支持,常见于 --disable-sockets 或 --disable-ipv6 编译场景。
4、注意:即使未显示 tcp6/udp6,仍可能通过 AF_INET6 地址族使用普通 tcp/udp 流(取决于 underlying libc),但此方法无法覆盖所有兼容性边界,需结合前两种方式交叉验证。
四、解析 php-config 输出中的 configure 参数
php-config 是 PHP 安装时生成的命令行工具,其 --configure-options 子命令可还原原始编译指令,是最权威的编译期 IPv6 状态证据来源,适用于 CLI 环境或无 Web 访问权限的服务器。
1、在终端中运行 php-config --configure-options。
2、在返回字符串中查找 --disable-ipv6;若存在,即表示编译时强制关闭 IPv6。
3、若未出现该参数,再查找 --enable-ipv6;若存在,确认启用;若两者皆无,需参考 PHP 版本默认行为(PHP 5.3+ 默认启用,除非显式禁用)。
4、将输出重定向至文件并 grep 筛选:php-config --configure-options | grep -i ipv6,提高定位效率。











