Start · Sprachen · PHP · Referenz · readline_clear_history

readline_clear_history

Funktion

Löscht den gesamten Verlauf (History) der Readline-Erweiterung und entfernt alle bisher gespeicherten Eingaben.

seit PHP 4.0.0 Kategorie: io

Signatur

readline_clear_history(): bool

Beschreibung

readline_clear_history() leert den internen History-Puffer der GNU-Readline-Bibliothek vollständig. Alle zuvor über die Befehlszeile eingegebenen oder mit readline_add_history() hinzugefügten Einträge werden entfernt.

Diese Funktion ist vor allem in interaktiven CLI-Skripten nützlich, bei denen der Verlauf zwischen verschiedenen Benutzersitzungen oder Arbeitsphasen zurückgesetzt werden soll – etwa um sensible Eingaben (Passwörter, API-Schlüssel) aus dem Verlauf zu löschen, bevor sie versehentlich gespeichert oder angezeigt werden.

Die Funktion steht nur auf Systemen zur Verfügung, auf denen PHP mit der readline-Erweiterung kompiliert wurde (typischerweise Unix/Linux-Systeme). Auf Windows-Systemen ist diese Erweiterung standardmäßig nicht verfügbar.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn die Readline-Erweiterung nicht verfügbar ist).

Beispiele

History löschen nach vertraulichen Eingaben

<?php
// Sensibles Passwort einlesen
$passwort = readline('Bitte Passwort eingeben: ');

// Passwort verarbeiten...
echo 'Passwort wurde verarbeitet.' . PHP_EOL;

// History sofort löschen, damit das Passwort nicht im Verlauf erscheint
if (readline_clear_history()) {
    echo 'History wurde erfolgreich gelöscht.' . PHP_EOL;
} else {
    echo 'Fehler beim Löschen der History.' . PHP_EOL;
}
Bitte Passwort eingeben: Passwort wurde verarbeitet. History wurde erfolgreich gelöscht.

History anzeigen, löschen und erneut prüfen

<?php
// Einige Einträge zur History hinzufügen
readline_add_history('ls -la');
readline_add_history('cd /var/www');
readline_add_history('php -v');

// Aktuellen Verlauf ausgeben
$history = readline_list_history();
echo 'History-Einträge vor dem Löschen:' . PHP_EOL;
foreach ($history as $index => $eintrag) {
    echo "  [{$index}] {$eintrag}" . PHP_EOL;
}

// History leeren
readline_clear_history();

// Verlauf nach dem Löschen prüfen
$historyNach = readline_list_history();
echo 'History-Einträge nach dem Löschen: ' . count($historyNach) . PHP_EOL;
History-Einträge vor dem Löschen: [0] ls -la [1] cd /var/www [2] php -v History-Einträge nach dem Löschen: 0

// Wichtig · Fallstricke

Sicherheitshinweis: Wenn ein interaktives Skript sensible Daten wie Passwörter oder Tokens über readline() einliest, sollte readline_clear_history() unmittelbar nach der Verarbeitung aufgerufen werden. Andernfalls können diese Eingaben über die Pfeiltasten erneut sichtbar oder mit readline_write_history() in eine Datei geschrieben werden.

Plattformabhängigkeit: Die readline-Erweiterung ist nicht auf allen Plattformen verfügbar. Vor dem Einsatz sollte mit function_exists('readline_clear_history') geprüft werden, ob die Funktion verfügbar ist.