Start · Sprachen · PHP · Referenz · geoip_db_avail

geoip_db_avail

Funktion

Prüft, ob eine bestimmte GeoIP-Datenbank auf dem System installiert und verfügbar ist.

seit PHP 1.0.1 Kategorie: misc

Signatur

geoip_db_avail(int $database): bool

Beschreibung

geoip_db_avail() gehört zur PECL-Erweiterung geoip und überprüft, ob eine bestimmte GeoIP-Datenbank von MaxMind auf dem Server vorhanden und lesbar ist. Die Funktion gibt true zurück, wenn die Datenbank verfügbar ist, andernfalls false.

Als Parameter wird eine der vordefinierten GeoIP-Datenbank-Konstanten übergeben, z. B. GEOIP_COUNTRY_EDITION, GEOIP_CITY_EDITION_REV1 oder GEOIP_ORG_EDITION. Diese Konstanten entsprechen den unterschiedlichen Datenbanktypen, die MaxMind anbietet und die lokal installiert sein können.

Die Funktion ist besonders nützlich, bevor man andere geoip-Funktionen aufruft, um sicherzustellen, dass die benötigte Datenbank vorhanden ist und keine Fehler entstehen. So lassen sich Fallback-Strategien implementieren, wenn nur ein Teil der GeoIP-Datenbanken installiert ist.

Hinweis: Diese Funktion gehört zur älteren geoip-PECL-Erweiterung (MaxMind Legacy API). Für neue Projekte empfiehlt sich die Verwendung der offiziellen geoip2-PHP-Bibliothek von MaxMind.

Parameter

Name Typ Default Beschreibung
$database Pflicht int Eine der GeoIP-Datenbank-Typ-Konstanten, z. B. GEOIP_COUNTRY_EDITION, GEOIP_CITY_EDITION_REV1, GEOIP_ORG_EDITION usw. Die vollständige Liste der Konstanten ist in der geoip-Erweiterungsdokumentation zu finden.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die angegebene GeoIP-Datenbank auf dem System verfügbar ist, andernfalls false. Wenn ein ungültiger Datenbanktyp übergeben wird, gibt die Funktion ebenfalls false zurück.

Beispiele

Verfügbarkeit der Länderdatenbank prüfen

<?php
if (geoip_db_avail(GEOIP_COUNTRY_EDITION)) {
    $country = geoip_country_code_by_name('www.example.com');
    echo 'Land: ' . $country;
} else {
    echo 'GeoIP Country-Datenbank ist nicht verfügbar.';
}
Land: US

Mehrere Datenbanken auf Verfügbarkeit prüfen

<?php
$databases = [
    GEOIP_COUNTRY_EDITION       => 'Country Edition',
    GEOIP_CITY_EDITION_REV1     => 'City Edition Rev1',
    GEOIP_ORG_EDITION           => 'Organization Edition',
    GEOIP_ISP_EDITION           => 'ISP Edition',
];

foreach ($databases as $const => $name) {
    $status = geoip_db_avail($const) ? 'verfügbar' : 'nicht verfügbar';
    echo $name . ': ' . $status . PHP_EOL;
}
Country Edition: verfügbar City Edition Rev1: nicht verfügbar Organization Edition: nicht verfügbar ISP Edition: nicht verfügbar

// Wichtig · Fallstricke

PECL-Abhängigkeit: geoip_db_avail() ist nur verfügbar, wenn die PECL-Erweiterung geoip installiert und aktiviert ist. Auf vielen Shared-Hosting-Umgebungen ist diese Erweiterung nicht standardmäßig vorhanden.

Veraltete API: Die geoip-PECL-Erweiterung basiert auf der veralteten MaxMind Legacy GeoIP API (GeoIP v1). MaxMind empfiehlt für neue Projekte die Nutzung der GeoIP2-PHP-Bibliothek in Verbindung mit den aktuellen GeoIP2- oder GeoLite2-Datenbanken im MMDB-Format.

Die Konstanten wie GEOIP_COUNTRY_EDITION sind nur verfügbar, wenn die geoip-Erweiterung geladen ist. Ein direkter Aufruf ohne die Erweiterung führt zu einem fatalen Fehler.