Signatur
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
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;
}
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;
}
// 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.