Signatur
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
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);
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);
// 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.