Signatur
Beschreibung
geoip_db_filename() ist eine Funktion der PECL-Erweiterung geoip und liefert den absoluten Dateipfad zur GeoIP-Datenbankdatei, die dem angegebenen Datenbanktyp zugeordnet ist. Die GeoIP-Bibliothek von MaxMind verwendet verschiedene Datenbanktypen (z. B. für Länder, Regionen, Städte oder ISP-Informationen), die jeweils in separaten Dateien gespeichert sind.
Die Funktion ist nützlich, wenn man prüfen möchte, welche Datenbankdatei tatsächlich verwendet wird, etwa zur Fehlerdiagnose oder um sicherzustellen, dass die richtige Datenbankversion installiert ist. Sie gibt den Pfad zurück, den die GeoIP-Bibliothek intern für den angegebenen Typ konfiguriert hat.
Der Parameter database akzeptiert eine der vordefinierten GeoIP-Konstanten wie GEOIP_COUNTRY_EDITION, GEOIP_CITY_EDITION_REV1, GEOIP_ISP_EDITION usw. Ist für den angegebenen Typ keine Datei konfiguriert oder vorhanden, gibt die Funktion null zurück.
Hinweis: Diese Funktion gehört zur älteren Legacy-GeoIP-API (MaxMind GeoIP Legacy). Für neue Projekte empfiehlt MaxMind die Verwendung der GeoIP2-Bibliothek zusammen mit dem GeoLite2- oder GeoIP2-Datenbankformat.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $database Pflicht | int | Der GeoIP-Datenbanktyp als Integer-Konstante, z. B. GEOIP_COUNTRY_EDITION, GEOIP_CITY_EDITION_REV1 oder GEOIP_ISP_EDITION. |
Rückgabewert
null zurückgegeben.Beispiele
Dateipfad der Länder-Datenbank ausgeben
<?php
// Gibt den Dateipfad der GeoIP-Länderdatenbank aus
$filename = geoip_db_filename(GEOIP_COUNTRY_EDITION);
if ($filename !== null) {
echo 'Länderdatenbank: ' . $filename;
} else {
echo 'Keine Länderdatenbank konfiguriert.';
}
Alle konfigurierten GeoIP-Datenbankpfade auflisten
<?php
// Alle bekannten GeoIP-Datenbanktypen und ihre Pfade
$databases = [
GEOIP_COUNTRY_EDITION => 'Country Edition',
GEOIP_REGION_EDITION_REV1 => 'Region Edition Rev1',
GEOIP_CITY_EDITION_REV1 => 'City Edition Rev1',
GEOIP_ISP_EDITION => 'ISP Edition',
GEOIP_ORG_EDITION => 'Org Edition',
];
foreach ($databases as $type => $label) {
$path = geoip_db_filename($type);
if ($path !== null) {
echo $label . ': ' . $path . PHP_EOL;
} else {
echo $label . ': nicht verfügbar' . PHP_EOL;
}
}
// Wichtig · Fallstricke
PECL-Erweiterung erforderlich: Die Funktion steht nur zur Verfügung, wenn die PECL-Erweiterung geoip installiert und aktiviert ist. Prüfe die Verfügbarkeit mit extension_loaded('geoip').
Veraltete API: Die GeoIP Legacy-Datenbanken von MaxMind wurden eingestellt. Für neue Projekte sollte die GeoIP2-PHP-Bibliothek zusammen mit den GeoLite2/GeoIP2-Datenbanken im MMDB-Format verwendet werden.
Der zurückgegebene Pfad hängt von der Konfiguration der GeoIP-Bibliothek ab (häufig /usr/share/GeoIP/ auf Linux-Systemen). Die Datei muss tatsächlich existieren und lesbar sein, damit Abfragefunktionen wie geoip_country_code_by_name() korrekt funktionieren.