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