Signatur
Beschreibung
readline_read_history() lädt einen zuvor gespeicherten Eingabeverlauf aus einer Datei und stellt ihn der interaktiven Readline-History zur Verfügung. Damit können frühere Eingaben in einer neuen Sitzung erneut über die Pfeiltasten abgerufen werden.
Die Funktion wird typischerweise zusammen mit readline_write_history() eingesetzt: Beim Start eines CLI-Skripts liest man die History ein, und beim Beenden speichert man sie wieder – ähnlich wie es Bash mit ~/.bash_history tut.
Wird kein Dateiname angegeben, verwendet die zugrunde liegende Readline-Bibliothek einen internen Standardpfad (häufig ~/.history). Der Inhalt der Datei wird an die bereits vorhandene History angehängt, nicht ersetzt.
Die Funktion setzt voraus, dass PHP mit der GNU-Readline-Bibliothek kompiliert wurde. Auf Windows oder in Umgebungen ohne Readline-Erweiterung steht sie nicht zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename | string | '' | Pfad zur History-Datei, die eingelesen werden soll. Wird ein leerer String übergeben oder der Parameter weggelassen, verwendet Readline den bibliotheksinternen Standardpfad. |
Rückgabewert
true zurück, wenn die History-Datei erfolgreich gelesen wurde, andernfalls false (z. B. wenn die Datei nicht existiert oder nicht lesbar ist).Beispiele
Einfaches interaktives CLI-Skript mit History
<?php
// History beim Start laden
$historyFile = getenv('HOME') . '/.mein_cli_history';
readline_read_history($historyFile);
echo "Interaktives CLI – 'exit' zum Beenden." . PHP_EOL;
while (true) {
$input = readline('> ');
if ($input === false || strtolower(trim($input)) === 'exit') {
break;
}
if (trim($input) !== '') {
readline_add_history($input);
}
echo 'Eingabe war: ' . $input . PHP_EOL;
}
// History beim Beenden speichern
readline_write_history($historyFile);
echo 'Auf Wiedersehen!' . PHP_EOL;
Prüfen, ob History erfolgreich geladen wurde
<?php
$historyFile = '/tmp/meine_history.txt';
if (readline_read_history($historyFile)) {
echo 'History erfolgreich aus ' . $historyFile . ' geladen.' . PHP_EOL;
$list = readline_list_history();
echo 'Anzahl Einträge: ' . count($list) . PHP_EOL;
foreach ($list as $index => $entry) {
echo ($index + 1) . ': ' . $entry . PHP_EOL;
}
} else {
echo 'History konnte nicht geladen werden (Datei fehlt oder nicht lesbar).' . PHP_EOL;
}
// Wichtig · Fallstricke
Verfügbarkeit: Die Funktion steht nur zur Verfügung, wenn PHP mit der GNU Readline-Bibliothek kompiliert wurde (Konfigurationsoption --with-readline). Unter Windows oder bei aktivierter libedit-Bibliothek kann das Verhalten abweichen.
Sicherheit: Die History-Datei kann sensible Informationen wie Passwörter oder Tokens enthalten, die der Nutzer während einer interaktiven Sitzung eingegeben hat. Die Datei sollte daher mit restriktiven Dateiberechtigungen (z. B. chmod 600) gesichert werden.
Reihenfolge: Eingelesene Einträge werden an die aktuelle History angehängt. Mehrfaches Aufrufen mit verschiedenen Dateien führt daher zu einer kombinierten History.