Start · Sprachen · PHP · Referenz · radius_config

radius_config

Funktion

Veranlasst die RADIUS-Bibliothek, die angegebene Konfigurationsdatei zu lesen und zu verarbeiten.

Kategorie: misc

Signatur

radius_config(resource $radius_handle, string $file): bool

Beschreibung

radius_config() weist die RADIUS-Clientbibliothek an, eine Konfigurationsdatei einzulesen. Diese Datei enthält typischerweise Serveradressen, Shared Secrets, Timeouts und Wiederholungsversuche für die RADIUS-Authentifizierung oder -Abrechnung.

Die Funktion wird verwendet, wenn die RADIUS-Konfiguration nicht manuell über radius_add_server() gesetzt werden soll, sondern aus einer bestehenden Konfigurationsdatei im Format der libradius-Bibliothek (z. B. /etc/radius.conf) gelesen werden soll. Dies ist besonders praktisch in Umgebungen, in denen die Serverkonfiguration zentral verwaltet wird.

Die Funktion muss nach der Erstellung eines RADIUS-Handles via radius_auth_open() oder radius_acct_open() und vor dem ersten Authentifizierungsversuch aufgerufen werden. Im Fehlerfall kann der genaue Fehler mit radius_strerror() abgerufen werden.

Hinweis: Die PECL-Erweiterung radius muss installiert sein, damit diese Funktion verfügbar ist.

Parameter

Name Typ Default Beschreibung
$radius_handle Pflicht resource Ein gültiges RADIUS-Handle, das zuvor mit radius_auth_open() oder radius_acct_open() erstellt wurde.
$file Pflicht string Absoluter oder relativer Pfad zur RADIUS-Konfigurationsdatei (z. B. /etc/radius.conf), die von der Bibliothek eingelesen werden soll.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Konfigurationsdatei erfolgreich gelesen wurde, andernfalls false. Im Fehlerfall liefert radius_strerror() eine detaillierte Fehlermeldung.

Beispiele

RADIUS-Konfigurationsdatei einlesen

<?php
// RADIUS-Handle für Authentifizierung öffnen
$radius_handle = radius_auth_open();

if (!$radius_handle) {
    die('RADIUS-Handle konnte nicht erstellt werden.');
}

// Konfigurationsdatei einlesen
if (!radius_config($radius_handle, '/etc/radius.conf')) {
    $error = radius_strerror($radius_handle);
    die('Fehler beim Einlesen der RADIUS-Konfigurationsdatei: ' . $error);
}

echo 'Konfigurationsdatei erfolgreich geladen.' . PHP_EOL;

// Weiter mit Attributen und Authentifizierung...
radius_create_request($radius_handle, RADIUS_ACCESS_REQUEST);
radius_put_attr($radius_handle, RADIUS_USER_NAME, 'testbenutzer');
radius_put_attr($radius_handle, RADIUS_USER_PASSWORD, 'geheimespasswort');

$result = radius_send_request($radius_handle);

if ($result === RADIUS_ACCESS_ACCEPT) {
    echo 'Authentifizierung erfolgreich.' . PHP_EOL;
} else {
    echo 'Authentifizierung fehlgeschlagen.' . PHP_EOL;
}
Konfigurationsdatei erfolgreich geladen. Authentifizierung erfolgreich.

Fehlerbehandlung bei ungültigem Pfad

<?php
$radius_handle = radius_auth_open();

if (!$radius_handle) {
    die('RADIUS-Handle konnte nicht erstellt werden.');
}

$configFile = '/nicht/vorhandene/datei.conf';

if (!radius_config($radius_handle, $configFile)) {
    echo 'Fehler: ' . radius_strerror($radius_handle) . PHP_EOL;
} else {
    echo 'Konfiguration geladen.' . PHP_EOL;
}
Fehler: No such file or directory

// Wichtig · Fallstricke

Sicherheitshinweis: Stellen Sie sicher, dass die Konfigurationsdatei nur für berechtigte Benutzer lesbar ist, da sie das Shared Secret für die RADIUS-Kommunikation enthält. Unangemessene Dateiberechtigungen könnten das Secret offenlegen.

Falls sowohl radius_config() als auch radius_add_server() verwendet werden, können Konfigurationen aus der Datei durch manuell hinzugefügte Server ergänzt oder überschrieben werden – achten Sie auf mögliche Konflikte.

Die PECL-Erweiterung radius ist nicht standardmäßig in PHP enthalten und muss separat installiert werden (pecl install radius).