Start · Sprachen · PHP · Referenz · rrd_error

rrd_error

Funktion

Gibt die letzte Fehlermeldung der RRD-Bibliothek zurück, die bei einem fehlgeschlagenen RRD-Aufruf aufgetreten ist.

Kategorie: misc

Signatur

rrd_error(): string|false

Beschreibung

rrd_error() liefert die Fehlermeldung, die beim letzten fehlgeschlagenen Aufruf einer RRD-Funktion (z. B. rrd_update(), rrd_create(), rrd_graph()) intern gespeichert wurde. Die Funktion entspricht dem Konzept von mysql_error() bzw. error_get_last() – sie fragt einen bibliotheksinternen Fehlerpuffer ab.

RRDtool-Funktionen geben im Fehlerfall in der Regel false zurück, liefern aber keine detaillierte Fehlerbeschreibung direkt als Rückgabewert. rrd_error() schließt diese Lücke, indem es die zuletzt gespeicherte Fehlermeldung als lesbaren String zurückgibt.

Typischer Einsatz: Nach jedem RRD-Aufruf prüft man zunächst, ob der Rückgabewert false ist, und ruft dann rrd_error() auf, um die Ursache des Fehlers zu protokollieren oder dem Benutzer anzuzeigen. Der Fehlerpuffer wird durch einen erfolgreichen RRD-Aufruf nicht automatisch gelöscht; es empfiehlt sich daher, den Fehler unmittelbar nach dem fehlgeschlagenen Aufruf abzufragen.

Rückgabewert

Typ
string|false
Beschreibung
Gibt die letzte Fehlermeldung als string zurück, wenn ein Fehler aufgetreten ist. Gibt false zurück, wenn kein Fehler im Puffer vorhanden ist oder die RRD-Erweiterung nicht verfügbar ist.

Beispiele

Fehlermeldung nach einem fehlgeschlagenen rrd_update()-Aufruf abfragen

<?php
// Versuche, eine nicht vorhandene RRD-Datei zu aktualisieren
$result = rrd_update('/tmp/nicht_vorhanden.rrd', ['N:42']);

if ($result === false) {
    $errorMessage = rrd_error();
    echo 'RRD-Fehler: ' . $errorMessage . PHP_EOL;
} else {
    echo 'Update erfolgreich.' . PHP_EOL;
}
RRD-Fehler: opening '/tmp/nicht_vorhanden.rrd': No such file or directory

Fehlerbehandlung beim Erstellen einer RRD-Datei

<?php
// Versuche, eine RRD-Datei mit ungültigen Parametern zu erstellen
$options = [
    '--start', 'now',
    '--step', '300',
    'DS:ungueltig_langer_name_ueberschreitet_limit:GAUGE:600:0:100',
    'RRA:AVERAGE:0.5:1:288',
];

$result = rrd_create('/tmp/test.rrd', $options);

if ($result === false) {
    $error = rrd_error();
    error_log('RRD Create fehlgeschlagen: ' . $error);
    echo 'Fehler beim Erstellen der RRD-Datei: ' . htmlspecialchars($error) . PHP_EOL;
} else {
    echo 'RRD-Datei erfolgreich erstellt.' . PHP_EOL;
}
Fehler beim Erstellen der RRD-Datei: invalid DS name 'ungueltig_langer_name_ueberschreitet_limit'

// Wichtig · Fallstricke

Fehlerpuffer bleibt bestehen: Der interne Fehlerpuffer wird nicht automatisch nach einem erfolgreichen Aufruf geleert. Es kann daher vorkommen, dass rrd_error() eine veraltete Fehlermeldung zurückgibt, wenn man sie nicht unmittelbar nach einem fehlgeschlagenen Aufruf abfragt. Fragen Sie den Fehler immer direkt nach dem betroffenen RRD-Aufruf ab.

Erweiterung erforderlich: rrd_error() ist Teil der PECL-Erweiterung rrd. Diese ist nicht standardmäßig in PHP enthalten und muss separat installiert werden (z. B. via pecl install rrd).

Ausgabe-Escaping: Die zurückgegebene Fehlermeldung stammt aus der RRDtool-Bibliothek und kann Sonderzeichen enthalten. Bei der Ausgabe im Browser sollte sie stets mit htmlspecialchars() behandelt werden, um XSS zu vermeiden.