Start · Sprachen · PHP · Referenz · geoip_setup_custom_directory

geoip_setup_custom_directory

Funktion

Setzt ein benutzerdefiniertes Verzeichnis, in dem die GeoIP-Datenbankdateien gesucht werden.

Kategorie: misc

Signatur

geoip_setup_custom_directory(string $path): void

Beschreibung

geoip_setup_custom_directory() erlaubt es, den Suchpfad für die GeoIP-Datenbankdateien (z. B. GeoIP.dat, GeoLiteCity.dat) zur Laufzeit zu überschreiben. Standardmäßig sucht die GeoIP-Extension nach Datenbankdateien in dem Verzeichnis, das beim Kompilieren der Extension oder über die php.ini-Direktive geoip.custom_directory festgelegt wurde.

Diese Funktion ist nützlich, wenn Datenbankdateien dynamisch an unterschiedlichen Speicherorten abgelegt werden, z. B. bei mandantenfähigen Anwendungen oder wenn Datenbankupdates in ein Staging-Verzeichnis eingespielt werden sollen, ohne die PHP-Konfiguration zu ändern.

Der angegebene Pfad wird für alle nachfolgenden GeoIP-Abfragen innerhalb desselben PHP-Prozesses wirksam. Es empfiehlt sich, diese Funktion möglichst früh im Skript aufzurufen, bevor andere GeoIP-Funktionen verwendet werden.

Hinweis: Die Funktion gehört zur PECL-Extension geoip (nicht zur modernen GeoIP2-PHP-Bibliothek von MaxMind) und steht nur zur Verfügung, wenn diese Extension installiert ist.

Parameter

Name Typ Default Beschreibung
$path Pflicht string Absoluter oder relativer Dateisystempfad zu dem Verzeichnis, das die GeoIP-Datenbankdateien enthält. Abschließender Schrägstrich ist optional, wird aber empfohlen.

Rückgabewert

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück.

Beispiele

Benutzerdefiniertes GeoIP-Verzeichnis setzen und IP-Länder abfragen

<?php
// Pfad zu den GeoIP-Datenbankdateien setzen
geoip_setup_custom_directory('/var/data/geoip/');

// Anschließend können GeoIP-Funktionen normal genutzt werden
$ip = '8.8.8.8';
$country = geoip_country_name_by_name($ip);

echo "Land für IP {$ip}: " . $country . PHP_EOL;
Land für IP 8.8.8.8: United States

Dynamischer Pfad je nach Umgebung

<?php
// Pfad abhängig von der Umgebungsvariable festlegen
$geoipDir = getenv('GEOIP_DB_PATH') ?: '/usr/share/GeoIP/';

geoip_setup_custom_directory($geoipDir);

$ip = '93.184.216.34';
$record = geoip_record_by_name($ip);

if ($record !== false) {
    echo 'Stadt: ' . $record['city'] . PHP_EOL;
    echo 'Land: ' . $record['country_name'] . PHP_EOL;
} else {
    echo 'Kein Eintrag gefunden.' . PHP_EOL;
}
Stadt: Norwell Land: United States

// Wichtig · Fallstricke

Sicherheitshinweis: Achte darauf, dass der übergebene Pfad nicht direkt aus Benutzereingaben stammt, da dies zur Einbindung ungewünschter Datenbankdateien führen könnte. Validiere und bereinige den Pfad stets vor der Verwendung.

Die Funktion ist Teil der veralteten PECL-Extension geoip. Für neue Projekte empfiehlt MaxMind die Verwendung der modernen GeoIP2-PHP-Bibliothek in Kombination mit den GeoIP2-Datenbanken im MMDB-Format.

Falls das angegebene Verzeichnis nicht existiert oder nicht lesbar ist, können nachfolgende GeoIP-Funktionen fehlschlagen oder false zurückgeben.