Start · Sprachen · PHP · Referenz · radius_strerror

radius_strerror

Funktion

Gibt die letzte Fehlermeldung für ein RADIUS-Handle als lesbaren String zurück.

Kategorie: misc

Signatur

radius_strerror(resource $radius_handle): string

Beschreibung

radius_strerror() liefert eine menschenlesbare Fehlerbeschreibung für den zuletzt aufgetretenen Fehler eines RADIUS-Handles. Die Funktion gehört zur PECL-Erweiterung radius und wird typischerweise nach einem fehlgeschlagenen RADIUS-Funktionsaufruf eingesetzt, um den genauen Fehlergrund zu ermitteln.

Immer wenn eine Funktion wie radius_send_request(), radius_create_request() oder ähnliche RADIUS-Operationen false zurückgeben, kann mit radius_strerror() eine aussagekräftige Fehlermeldung abgerufen werden. Dadurch lässt sich das Debugging wesentlich einfacher gestalten.

Das Handle, das an die Funktion übergeben wird, muss zuvor mit radius_auth_open() oder radius_acct_open() erstellt worden sein. Die zurückgegebene Zeichenkette ist sprachenunabhängig (englisch) und eignet sich für Logdateien oder interne Diagnosemeldungen.

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.

Rückgabewert

Typ
string
Beschreibung
Gibt die Fehlermeldung des zuletzt aufgetretenen Fehlers für das angegebene RADIUS-Handle als Zeichenkette zurück. Wenn kein Fehler vorliegt, wird ein leerer String zurückgegeben.

Beispiele

Fehlerbehandlung nach fehlgeschlagenem RADIUS-Request

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

if (!$radius) {
    die('Konnte RADIUS-Handle nicht öffnen.');
}

// Konfiguration hinzufügen (absichtlich ungültige Adresse für Demo)
$result = radius_add_server(
    $radius,
    'invalid.radius.server',
    1812,
    'gemeinsames_geheimnis',
    3,
    3
);

if (!$result) {
    echo 'Fehler beim Hinzufügen des Servers: ' . radius_strerror($radius) . PHP_EOL;
}

// Authentifizierungsanfrage erstellen
if (!radius_create_request($radius, RADIUS_ACCESS_REQUEST)) {
    echo 'Fehler beim Erstellen der Anfrage: ' . radius_strerror($radius) . PHP_EOL;
    radius_close($radius);
    exit(1);
}

// Anmeldedaten setzen
radius_put_attr($radius, RADIUS_USER_NAME, 'testbenutzer');
radius_put_attr($radius, RADIUS_USER_PASSWORD, 'geheimesPasswort');

// Anfrage senden
$response = radius_send_request($radius);

if ($response === false) {
    echo 'RADIUS-Fehler: ' . radius_strerror($radius) . PHP_EOL;
} else {
    switch ($response) {
        case RADIUS_ACCESS_ACCEPT:
            echo 'Authentifizierung erfolgreich.' . PHP_EOL;
            break;
        case RADIUS_ACCESS_REJECT:
            echo 'Authentifizierung abgelehnt.' . PHP_EOL;
            break;
        default:
            echo 'Unbekannte Antwort: ' . $response . PHP_EOL;
    }
}

radius_close($radius);
Fehler beim Hinzufügen des Servers: ... (serverabhängige Fehlermeldung)

Wiederverwendbare Fehlerlog-Funktion mit radius_strerror

<?php
function logRadiusError(resource $handle, string $context): void {
    $fehler = radius_strerror($handle);
    $zeitstempel = date('Y-m-d H:i:s');
    error_log("[$zeitstempel] RADIUS-Fehler in '$context': $fehler");
}

$radius = radius_auth_open();

if (!radius_config($radius, '/etc/radius.conf')) {
    logRadiusError($radius, 'radius_config');
    radius_close($radius);
    exit(1);
}

if (!radius_create_request($radius, RADIUS_ACCESS_REQUEST)) {
    logRadiusError($radius, 'radius_create_request');
    radius_close($radius);
    exit(1);
}

echo 'RADIUS-Anfrage wurde erfolgreich erstellt.' . PHP_EOL;
radius_close($radius);

// Wichtig · Fallstricke

PECL-Erweiterung: radius_strerror() ist Teil der PECL-Erweiterung radius, die separat installiert werden muss (pecl install radius). Sie ist nicht standardmäßig in PHP enthalten.

Kompatibilität: Ab PHP 8.0 werden PECL-resource-Typen in manchen Erweiterungen durch Objekte ersetzt. Prüfen Sie die aktuelle Dokumentation der radius-PECL-Erweiterung für Ihre PHP-Version.

Die zurückgegebenen Fehlermeldungen sind auf Englisch und für technisches Personal oder Logdateien gedacht. Zeigen Sie diese Meldungen niemals unbereinigt dem Endbenutzer an, da sie interne Systemdetails preisgeben können.