Signatur
Beschreibung
radius_acct_open() initialisiert eine neue RADIUS-Client-Ressource, die speziell für Accounting-Zwecke (RFC 2866) ausgelegt ist. Der Rückgabewert ist ein Handle, das bei allen weiteren Aufrufen der RADIUS-Erweiterung (z. B. radius_add_server(), radius_create_request(), radius_send_request()) als erstes Argument übergeben werden muss.
Accounting-Handles unterscheiden sich von Authentifizierungs-Handles (die mit radius_auth_open() erzeugt werden) insofern, als sie typischerweise an Port 1813 kommunizieren und Informationen über Sitzungsbeginn, -dauer und -ende an einen RADIUS-Server übermitteln. Dies ist nützlich für Abrechnungs- und Nutzungsprotokollierungssysteme.
Nach Beendigung der Arbeit mit dem Handle sollte die Ressource mit radius_close() freigegeben werden, um Ressourcenlecks zu vermeiden.
Hinweis: Diese Funktion setzt die PECL-Erweiterung radius voraus, die separat installiert werden muss und nicht Teil des PHP-Kerns ist.
Rückgabewert
false zurückgegeben.Beispiele
Accounting-Handle erstellen und Server hinzufügen
<?php
// RADIUS-Accounting-Handle öffnen
$radius = radius_acct_open();
if ($radius === false) {
die('Konnte kein RADIUS-Accounting-Handle erstellen.');
}
// RADIUS-Server für Accounting hinzufügen (Host, Secret, Port, Timeout, Max-Versuche)
if (!radius_add_server($radius, '192.168.1.10', 1813, 'geheim', 3, 3)) {
die('Fehler beim Hinzufügen des RADIUS-Servers: ' . radius_strerror($radius));
}
// Accounting-Start-Anfrage erstellen
if (!radius_create_request($radius, RADIUS_ACCOUNTING_REQUEST)) {
die('Fehler beim Erstellen der Anfrage: ' . radius_strerror($radius));
}
// Attribute setzen
radius_put_attr($radius, RADIUS_ACCT_STATUS_TYPE, RADIUS_START);
radius_put_attr($radius, RADIUS_USER_NAME, 'max.mustermann');
radius_put_int($radius, RADIUS_ACCT_SESSION_TIME, 0);
// Anfrage absenden
$result = radius_send_request($radius);
if ($result == RADIUS_ACCOUNTING_RESPONSE) {
echo 'Accounting-Start erfolgreich übermittelt.' . PHP_EOL;
} else {
echo 'Fehler: ' . radius_strerror($radius) . PHP_EOL;
}
radius_close($radius);
?>
Fehlerbehandlung beim Öffnen des Handles
<?php
$radius = radius_acct_open();
if ($radius === false) {
error_log('radius_acct_open() schlug fehl – PECL-Erweiterung installiert?');
// Alternativen-Logik oder Abbruch
exit(1);
}
echo 'RADIUS-Accounting-Handle erfolgreich erstellt.' . PHP_EOL;
// ... weitere Operationen ...
radius_close($radius);
?>
// Wichtig · Fallstricke
Voraussetzung: Die PECL-Erweiterung radius muss installiert und in der php.ini aktiviert sein (extension=radius). Ohne diese Erweiterung ist die Funktion nicht verfügbar.
Sicherheit: Der gemeinsame geheime Schlüssel (Shared Secret), der mit radius_add_server() übergeben wird, sollte sicher und ausreichend lang sein. Er sollte niemals im Klartext in versionierten Dateien gespeichert werden, sondern aus Umgebungsvariablen oder geschützten Konfigurationsdateien gelesen werden.
Ressourcen: Jedes geöffnete Handle belegt Systemressourcen. Rufen Sie stets radius_close() auf, wenn das Handle nicht mehr benötigt wird, um Lecks zu vermeiden – insbesondere in langlaufenden Prozessen.