Signatur
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
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);
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.