ZetCode

PHP curl_version 函数

最后修改日期:2025 年 4 月 11 日

PHP curl_version 函数返回有关 cURL 版本的信息。它提供已安装的 cURL 功能和能力。这有助于确定可用的协议和 SSL 支持。

基本定义

curl_version 函数返回一个包含 cURL 版本数据的关联数组。它接受一个可选的 age 参数来指定数据版本。该函数不需要 cURL 句柄。

语法:curl_version(int $age = CURLVERSION_NOW): array|false。失败时返回 FALSE。数组包含版本号、功能和协议。请始终检查返回值。

基本版本信息

此示例演示如何获取基本的 cURL 版本信息。

basic_version.php
<?php

declare(strict_types=1);

$version = curl_version();

if ($version === false) {
    echo "Failed to get cURL version";
} else {
    echo "cURL version: " . $version['version'] . "\n";
    echo "SSL version: " . $version['ssl_version'] . "\n";
    echo "Libz version: " . $version['libz_version'] . "\n";
}

此代码检索基本的 cURL 版本详细信息。我们首先检查是否失败。然后我们显示 cURL 版本、SSL 版本和 libz 版本。这些是大多数安装中常见且可用的字段。

检查可用协议

此示例显示如何检查 cURL 支持哪些协议。

protocols_check.php
<?php

declare(strict_types=1);

$version = curl_version();

if ($version === false) {
    echo "Failed to get cURL version";
} else {
    echo "Supported protocols:\n";
    foreach ($version['protocols'] as $protocol) {
        echo "- $protocol\n";
    }
}

我们检索版本信息并显示支持的协议。'protocols' 字段包含一个字符串数组。这有助于确定可以使用 cURL 哪些 URL 方案。常见协议包括 HTTP、HTTPS 和 FTP。

检查 SSL 支持

此示例演示如何验证 cURL 中的 SSL/TLS 支持。

ssl_support.php
<?php

declare(strict_types=1);

$version = curl_version();

if ($version === false) {
    echo "Failed to get cURL version";
} else {
    $ssl_supported = ($version['features'] & CURL_VERSION_SSL) !== 0;
    echo "SSL support: " . ($ssl_supported ? "Yes" : "No") . "\n";
    
    $https_supported = in_array('https', $version['protocols'], true);
    echo "HTTPS support: " . ($https_supported ? "Yes" : "No") . "\n";
}

我们同时检查 SSL 功能和 HTTPS 协议支持。features 字段包含位掩码标志。CURL_VERSION_SSL 表示 SSL 支持。我们还验证 HTTPS 是否在协议列表中。建议同时进行这两种检查以实现安全连接。

检查功能标志

此示例显示如何检查各种 cURL 功能标志。

feature_flags.php
<?php

declare(strict_types=1);

$version = curl_version();

if ($version === false) {
    echo "Failed to get cURL version";
} else {
    $features = $version['features'];
    
    echo "IPv6 support: " . (($features & CURL_VERSION_IPV6) ? "Yes" : "No") . "\n";
    echo "HTTP2 support: " . (($features & CURL_VERSION_HTTP2) ? "Yes" : "No") . "\n";
    echo "GSS-Negotiate: " . (($features & CURL_VERSION_GSSNEGOTIATE) ? "Yes" : "No") . "\n";
    echo "Debug enabled: " . (($features & CURL_VERSION_DEBUG) ? "Yes" : "No") . "\n";
}

我们检查版本数据中的几个功能标志。每个标志都通过与 features 位掩码进行按位 AND 来检查。这揭示了 IPv6、HTTP/2 和调试支持等高级功能。适用于功能检测。

完整版本信息

此示例以格式化的方式显示所有可用的版本信息。

complete_info.php
<?php

declare(strict_types=1);

$version = curl_version();

if ($version === false) {
    echo "Failed to get cURL version";
} else {
    echo "Complete cURL version information:\n";
    echo str_repeat("-", 40) . "\n";
    
    foreach ($version as $key =>  $value) {
        if (is_array($value)) {
            echo "$key: " . implode(", ", $value) . "\n";
        } else {
            echo "$key: $value\n";
        }
    }
}

此代码显示所有可用的版本信息。数组值用逗号连接以提高可读性。输出包括版本号、主机信息、功能和协议。适用于调试和系统信息。

最佳实践

来源

PHP curl_version 文档

本教程通过实际示例涵盖了 PHP curl_version 函数,展示了如何检查 cURL 功能和版本信息。

作者

我的名字是 Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。至今,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

所有 PHP cURL 教程列表。