Start · Sprachen · PHP · Referenz · geoip_db_get_all_info

geoip_db_get_all_info

Funktion

Gibt ein assoziatives Array mit detaillierten Informationen zu allen verfügbaren GeoIP-Datenbanktypen zurück.

seit PHP 1.0.1 Kategorie: misc

Signatur

geoip_db_get_all_info(): array

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

Typ
array
Beschreibung
Gibt ein numerisch indiziertes, mehrdimensionales Array zurück. Jeder Eintrag repräsentiert einen GeoIP-Datenbanktyp und enthält folgende Schlüssel:
  • 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";
    }
}
ID 1: GeoIP Country Edition — verfügbar Datei: /usr/share/GeoIP/GeoIP.dat ID 2: GeoIP City Edition, Rev 1 — nicht verfügbar ID 5: GeoIP Organization Edition — nicht verfügbar ...

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']);
    }
}
Verfügbare GeoIP-Datenbanken: [1] GeoIP Country Edition => /usr/share/GeoIP/GeoIP.dat

// 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.