Start · Sprachen · PHP · Referenz · pg_version

pg_version

Funktion

Gibt ein Array mit den Versionsinformationen von PostgreSQL-Client, -Protokoll und -Server zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

pg_version(PgSql\Connection $connection = ?): array

Beschreibung

pg_version() liefert ein assoziatives Array mit Versionsinformationen zur aktuellen PostgreSQL-Verbindung. Das Array enthält die Schlüssel client (Version der libpq-Clientbibliothek), protocol (verwendetes Kommunikationsprotokoll) und server (Version des PostgreSQL-Servers, sofern verfügbar).

Diese Funktion ist nützlich, wenn man sicherstellen möchte, dass die eingesetzte Server- oder Clientversion bestimmte Funktionen unterstützt – beispielsweise um versionsabhängige SQL-Syntax oder Features gezielt einzusetzen. Die Serverversion steht nur zur Verfügung, wenn das verwendete Protokoll mindestens Version 3 ist (PostgreSQL >= 7.4).

Wird kein $connection-Parameter übergeben, verwendet PHP die zuletzt geöffnete Verbindung. Seit PHP 8.1 ist der Verbindungsparameter ein PgSql\Connection-Objekt; in älteren Versionen war es eine Ressource.

Parameter

Name Typ Default Beschreibung
$connection PgSql\Connection Eine PostgreSQL-Datenbankverbindung, wie sie von pg_connect() oder pg_pconnect() zurückgegeben wird. Wird dieser Parameter weggelassen, wird die zuletzt geöffnete Verbindung verwendet.

Rückgabewert

Typ
array
Beschreibung
Gibt ein assoziatives Array mit den Schlüsseln client (Clientversion), protocol (Protokollversion) und server (Serverversion, falls verfügbar) zurück. Die Werte sind jeweils Strings in der Form "major.minor.patch".

Beispiele

Versionsinformationen einer PostgreSQL-Verbindung ausgeben

<?php
$conn = pg_connect("host=localhost dbname=testdb user=postgres password=geheim");

if (!$conn) {
    die('Verbindung fehlgeschlagen.');
}

$version = pg_version($conn);

echo 'Client-Version:   ' . $version['client']   . PHP_EOL;
echo 'Protokoll-Version: ' . $version['protocol'] . PHP_EOL;
echo 'Server-Version:   ' . $version['server']   . PHP_EOL;

pg_close($conn);
Client-Version: 15.2 Protokoll-Version: 3 Server-Version: 15.2

Versionsabhängige Logik – Feature-Erkennung

<?php
$conn = pg_connect("host=localhost dbname=testdb user=postgres password=geheim");

if (!$conn) {
    die('Verbindung fehlgeschlagen.');
}

$version = pg_version($conn);

// Serverversion als vergleichbare Ganzzahl ermitteln
$serverVersion = isset($version['server']) ? $version['server'] : '0';
$parts = explode('.', $serverVersion);
$major = (int) $parts[0];

if ($major >= 14) {
    echo 'PostgreSQL 14+ erkannt: JSONB-Subscripting und weitere Features verfügbar.' . PHP_EOL;
} else {
    echo 'Ältere PostgreSQL-Version – einige Features sind möglicherweise nicht verfügbar.' . PHP_EOL;
}

pg_close($conn);
PostgreSQL 14+ erkannt: JSONB-Subscripting und weitere Features verfügbar.

// Wichtig · Fallstricke

Die Serverversion (server) ist nur vorhanden, wenn das Protokoll mindestens Version 3 verwendet wird, was PostgreSQL-Server ab Version 7.4 voraussetzt. Bei älteren Servern oder Protokollversion 2 fehlt dieser Schlüssel im zurückgegebenen Array.

Seit PHP 8.1.0 erwartet der Parameter $connection ein PgSql\Connection-Objekt anstelle einer Ressource. Code, der resource-Typen verwendet, gibt in PHP 8.1+ eine Deprecation-Warnung aus und sollte angepasst werden.