Wenn ich php5-cli auf Debian Wheezy installiere (derzeit getestet), ist die interaktive Eingabeaufforderung aufgrund fehlender Readline-Unterstützung (Fehler 341868 ) sehr unbrauchbar . Was ist der einfachste Weg, um eine mit libreadline verknüpfte Version zu installieren (für die nutzbare Zeilenbearbeitung)?
command-line
debian
php
readline
Matthew Flaschen
quelle
quelle
php>
Aufforderung für mich :(Installieren Sie nach der Installation von php5-cli von dotdeb das Paket php5-readline.
quelle
php5-readline
ist im Hauptarchiv von Jessie und Sid verfügbar. Und dasphp5-cli
von dotdeb brauchst du nicht .Als Ergänzung zu der Antwort von Gilles, der vorschlägt, das gesamte PHP-Paket neu zu kompilieren, können Sie auch auf PHP 5.4 warten. In 5.4 habe ich die Readline-Funktionalität so umstrukturiert, dass sich alle erforderlichen Teile im Readline-Modul befinden, sodass Sie diese eigenständig erstellen können.
Dann erhalten Sie eine,
modules/readline.so
die von php.ini geladen werden kann (make install
wird verschoben nachextension_dir
)Alternativ kann der Distributor das Readline-Modul versenden (möglicherweise mit libedit verknüpft, nicht mit readline), und der interaktive Modus ist verfügbar.
Dies alles wird Ihnen jetzt nicht helfen (da PHP 5.4 noch nicht verfügbar ist), könnte aber anderen helfen, diese Frage später zu finden.
Weitere Details in meinem Blog: http://schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html
Bearbeiten: Eigentlich ist der Blog-Beitrag älter als diese Änderung, könnte aber trotzdem interessant sein. Ein paar Informationen sind im Fehlerbericht # 53878 enthalten, aber auch nicht viel ... nach der Veröffentlichung sollte http://php.net/commandline.interactive mehr enthalten.
quelle
Installieren
rlwrap
und ausführenrlwrap php5
. Rlwrap ist ein generischer Readline-Wrapper, der Befehlszeilenausgabe und -verlauf für jede Read-Eval-Print-Schleife bereitstellt. Da es sich um einen generischen Wrapper handelt, erhalten Sie keine PHP-spezifische Vervollständigung.Alternativ können Sie das Quellpaket herunterladen und mit Readline-Unterstützung neu erstellen. Die Readline-Unterstützung wurde nur aufgrund von Lizenzproblemen ausgelassen. Diese Probleme verbieten jedoch nur die Verbreitung von PHP5 in Verbindung mit Readline. Sie verbieten Ihnen nicht, es zu verwenden.
quelle
rlwrap
scheint nicht viel zu helfen. Wenn ich lauferlwrap php5
, gebe einecho 1;
, drücke dann die Eingabetaste und dann Strg-D (Ende der Eingabe), es gibt die Eingabeecho 1;
anstelle des Ergebnisses aus (1). Vielen Dank, dass Sie ein Lizenzproblem festgestellt haben.rlwrap php5
und nurphp5
, abgesehen von der früheren, die die Befehlszeilenausgabe zulässt. Wenn Sie eingeben<?php echo 1;?>
, ist die Ausgabe1
, wird aber in beiden Fällen nicht sofort ausgegeben . Googeln schlägt vor, dass diesphp5
einfach keine PHP-REPL ist, und Sie sollten stattdessen so etwas wie phpsh verwenden.<?php
oder nicht?>
in die interaktive Shell ein. Ich bin damit einverstanden, dass PHP keine vollständige REPL hat. Bei Verwendung einer Version, die mit funktionierender Readline-Unterstützung kompiliert wurde (z. B. das von mir verknüpfte Dotdeb-Paket), wird unmittelbar nach dem Drücken der Eingabetaste 1 (oder eine beliebige tatsächliche Ausgabe) ausgegeben. Ich bin damit einverstanden, dass es keinen signifikanten Unterschied zwischen rlwrap und überhaupt keiner Readline gibt (abgesehen von Zeilenbearbeitung und Verlauf, die nett, aber nicht so nützlich sind wie die sofortige Ausgabe).Versuche dies:
Drücken Sie Strg-d
quelle
<?php ?>
Blöcken ausführt . Ich war mir dessen nicht bewusst und es zeigt, dass ich Gilles früher missverstanden habe.Für Ubuntu-Benutzer ist php5-readline das zusätzliche Paket, das Sie installieren müssen, um eine verwendbare PHP-Eingabeaufforderung zu erhalten:
Ich musste dies auf meinem Ubuntu 14.04 tun.
quelle
Nichts davon hat bei mir funktioniert. Verwenden Sie stattdessen http://www.phpsh.org/ .
quelle
In Debian Jessie und in Debian Sid verwenden:
dann
quelle