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