Signatur
Beschreibung
geoip_db_get_all_info() liefert ein mehrdimensionales Array, das für jeden bekannten GeoIP-Datenbanktyp Metainformationen enthält – darunter ob die Datenbank verfügbar ist, ihr Dateiname auf dem Dateisystem sowie die interne Datenbank-ID. Diese Funktion stammt aus der PECL-Erweiterung geoip und setzt eine installierte MaxMind-GeoIP-Bibliothek voraus.
Das zurückgegebene Array ist nach numerischen Datenbank-IDs indiziert (entsprechend den GEOIP_*_EDITION-Konstanten). Jeder Eintrag enthält mindestens die Schlüssel available (bool), description (string) und filename (string). So lässt sich auf einen Blick ermitteln, welche Datenbanken lokal installiert und einsatzbereit sind.
Die Funktion ist besonders nützlich für Diagnose-Skripte oder Administrationsseiten, um den Zustand der GeoIP-Installation zu prüfen, ohne jede Datenbank einzeln mit geoip_db_avail() abfragen zu müssen.
Hinweis: Die Funktion gehört zur veralteten MaxMind-GeoIP-Legacy-API (GeoIP1). Für neue Projekte empfiehlt MaxMind die Verwendung der GeoIP2-Bibliothek zusammen mit der entsprechenden PHP-Clientbibliothek.
Rückgabewert
available(bool) –true, wenn die Datenbank verfügbar und lesbar ist.description(string) – Lesbare Bezeichnung des Datenbanktyps, z. B.GeoIP Country Edition.filename(string) – Absoluter Pfad zur Datenbankdatei auf dem Dateisystem (kann leer sein, wenn nicht verfügbar).
Beispiele
Alle GeoIP-Datenbanken auflisten und Status anzeigen
<?php
$infos = geoip_db_get_all_info();
foreach ($infos as $id => $info) {
$status = $info['available'] ? 'verfügbar' : 'nicht verfügbar';
echo sprintf(
"ID %d: %s — %s\n",
$id,
$info['description'],
$status
);
if ($info['available']) {
echo ' Datei: ' . $info['filename'] . "\n";
}
}
Nur verfügbare Datenbanken herausfiltern
<?php
$infos = geoip_db_get_all_info();
$verfuegbar = array_filter($infos, function (array $info): bool {
return $info['available'] === true;
});
if (empty($verfuegbar)) {
echo "Keine GeoIP-Datenbank gefunden.\n";
} else {
echo "Verfügbare GeoIP-Datenbanken:\n";
foreach ($verfuegbar as $id => $info) {
echo sprintf(" [%d] %s => %s\n", $id, $info['description'], $info['filename']);
}
}
// Wichtig · Fallstricke
Abhängigkeit: Die Funktion steht nur zur Verfügung, wenn die PECL-Erweiterung geoip installiert und aktiviert ist (extension=geoip.so in der php.ini). Ohne diese Erweiterung führt der Aufruf zu einem fatalen Fehler.
Veraltete API: MaxMind hat die Legacy-GeoIP1-Datenbanken (z. B. GeoIP.dat) abgekündigt. Neue Projekte sollten auf die GeoIP2-Datenbanken und die offizielle GeoIP2-PHP-Bibliothek umsteigen.
Die numerischen IDs der Einträge korrespondieren mit den Konstanten GEOIP_COUNTRY_EDITION, GEOIP_CITY_EDITION_REV1 usw. Diese Konstanten können genutzt werden, um gezielt auf einen bestimmten Typ zuzugreifen.