Start · Sprachen · PHP · Referenz · curl_version

curl_version

Funktion

Liefert Informationen über die installierte cURL-Bibliothek, einschließlich Versionsnummern und unterstützter Protokolle und Features.

seit PHP 4.0.2 Kategorie: http

Signatur

curl_version(int $age = CURLVERSION_NOW): array|false

Beschreibung

curl_version() gibt ein assoziatives Array zurück, das detaillierte Informationen über die aktuell verwendete cURL-Bibliothek enthält. Dazu gehören die cURL-Version selbst, die Version der libssl, die Version von libz (zlib) sowie eine Liste der unterstützten Protokolle und SSL-Versionen.

Die Funktion ist besonders nützlich, um zur Laufzeit zu prüfen, ob bestimmte Features oder Protokolle (z. B. HTTP/2, HTTPS, FTP) von der installierten cURL-Version unterstützt werden, bevor man entsprechende Anfragen ausführt. So können Kompatibilitätsprobleme frühzeitig erkannt werden.

Das zurückgegebene Array enthält unter anderem die Schlüssel version (cURL-Version als String), version_number (als Integer), ssl_version, libz_version, protocols (Array der unterstützten Protokolle) sowie features (Bitfeld der unterstützten Features wie CURL_VERSION_HTTP2).

Der Parameter age ist intern für die cURL-Bibliothek und sollte in der Regel nicht manuell gesetzt werden. Der Standardwert CURLVERSION_NOW ist stets korrekt.

Parameter

Name Typ Default Beschreibung
$age int CURLVERSION_NOW Interne Versionsnummer für die cURL-Bibliothek. Sollte den Standardwert CURLVERSION_NOW behalten. Nur in sehr speziellen Szenarien relevant.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array mit cURL-Versionsinformationen zurück. Im Fehlerfall (z. B. wenn cURL nicht verfügbar ist) wird false zurückgegeben. Das Array enthält u. a. die Schlüssel version, version_number, host, features, ssl_version, ssl_version_number, libz_version, protocols und ares.

Beispiele

Grundlegende Verwendung: cURL-Version ausgeben

<?php
$info = curl_version();

if ($info !== false) {
    echo 'cURL-Version: ' . $info['version'] . PHP_EOL;
    echo 'SSL-Version:  ' . $info['ssl_version'] . PHP_EOL;
    echo 'zlib-Version: ' . $info['libz_version'] . PHP_EOL;
    echo 'Unterstützte Protokolle: ' . implode(', ', $info['protocols']) . PHP_EOL;
} else {
    echo 'cURL ist nicht verfügbar.';
}
cURL-Version: 8.4.0 SSL-Version: OpenSSL/3.1.4 zlib-Version: 1.2.13 Unterstützte Protokolle: dict, file, ftp, ftps, gopher, gophers, http, https, imap, imaps, ldap, ldaps, mqtt, pop3, pop3s, rtsp, smb, smbs, smtp, smtps, telnet, tftp

HTTP/2-Unterstützung prüfen

<?php
$info = curl_version();

if ($info !== false) {
    $supportsHttp2 = ($info['features'] & CURL_VERSION_HTTP2) !== 0;

    if ($supportsHttp2) {
        echo 'HTTP/2 wird von dieser cURL-Installation unterstützt.' . PHP_EOL;
    } else {
        echo 'HTTP/2 wird NICHT unterstützt. Upgrade erforderlich.' . PHP_EOL;
    }

    // Weitere Feature-Flags prüfen
    $supportsHttps = in_array('https', $info['protocols']);
    echo 'HTTPS-Protokoll verfügbar: ' . ($supportsHttps ? 'Ja' : 'Nein') . PHP_EOL;
}
HTTP/2 wird von dieser cURL-Installation unterstützt. HTTPS-Protokoll verfügbar: Ja

Vollständige Versionsinfo als Debug-Ausgabe

<?php
$info = curl_version();

if ($info !== false) {
    echo 'cURL Host:       ' . $info['host'] . PHP_EOL;
    echo 'cURL Version:    ' . $info['version'] . PHP_EOL;
    echo 'Version-Integer: ' . $info['version_number'] . PHP_EOL;
    echo 'Features-Bitfeld:' . decbin($info['features']) . PHP_EOL;

    // Mindest-Versionscheck
    if ($info['version_number'] >= 0x074200) { // 7.66.0
        echo 'cURL-Version ist ausreichend aktuell.' . PHP_EOL;
    } else {
        echo 'Warnung: cURL-Version veraltet!' . PHP_EOL;
    }
}
cURL Host: x86_64-pc-linux-gnu cURL Version: 8.4.0 Version-Integer: 526336 Features-Bitfeld:1111110111110111101111 cURL-Version ist ausreichend aktuell.

// Wichtig · Fallstricke

Feature-Flags: Das Feld features ist ein Bitfeld. Verfügbare Konstanten sind z. B. CURL_VERSION_HTTP2, CURL_VERSION_HTTP3, CURL_VERSION_IPV6, CURL_VERSION_KERBEROS4, CURL_VERSION_LIBZ, CURL_VERSION_SSL und weitere. Nicht alle Konstanten sind in jeder PHP-Version definiert.

Version als Integer: version_number kodiert die Version als 0xXXYYZZ (Major, Minor, Patch). Ein Vergleich wie $info['version_number'] >= 0x073800 (= 7.56.0) ist eine zuverlässige Methode zur Versionsüberprüfung.

Deprecated seit PHP 8.0: Der Parameter age hat keine nennenswerte Funktion mehr für PHP-Entwickler und sollte weggelassen werden.