Kiedy instaluję php5-cli na Debian Wheezy (obecnie testuję ) , interaktywny monit jest bardzo bezużyteczny z powodu braku obsługi readline (błąd 341868 ). Jaki jest najłatwiejszy sposób zainstalowania wersji powiązanej z libreadline (do edycji linii użytkowej)?
command-line
debian
php
readline
Matthew Flaschen
źródło
źródło
php>
dla mnie monitu :(Po zainstalowaniu php5-cli z dotdeb , zainstaluj pakiet php5-readline.
źródło
php5-readline
jest dostępny w głównym archiwum jessie i sid. I nie potrzebujeszphp5-cli
z dotdeb.Jako dodatek do odpowiedzi Gillesa, który sugeruje rekompilację pełnego pakietu PHP, możesz także poczekać na PHP 5.4. W 5.4 zrestrukturyzowałem funkcjonalność readline, że wszystkie wymagane części znajdują się w module readline, dzięki czemu możesz zbudować ten samodzielny.
Następnie skończysz
modules/readline.so
z plikiem, który można załadować z php.ini (make install
przeniesie go doextension_dir
)Alternatywnie dystrybutor może wysłać moduł readline (być może powiązany z libedit, a nie readline), a tryb interaktywny będzie dostępny.
To wszystko nie pomoże ci teraz (ponieważ PHP 5.4 nie jest jeszcze dostępne), ale może pomóc innym znaleźć to pytanie później.
Więcej szczegółów na moim blogu: http://schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html
Edycja: W rzeczywistości post na blogu jest starszy niż ta zmiana, ale może być interesujący. Trochę informacji znajduje się w raporcie o błędzie # 53878, ale też niewiele ... po wydaniu http://php.net/commandline.interactive powinno mieć więcej.
źródło
Zainstaluj
rlwrap
i uruchomrlwrap php5
. Rlwrap to ogólne opakowanie readline, zapewnia edycję i historię wiersza poleceń dla dowolnej pętli read-eval-print. Ponieważ jest to ogólne opakowanie, nie otrzymasz żadnego zakończenia specyficznego dla PHP.Alternatywnie, pobierz pakiet źródłowy i przebuduj go z obsługą readline. Wsparcie Readline zostało pominięte tylko z powodu problemów licencyjnych , ale te problemy zabraniają jedynie dystrybucji PHP5 połączonego z readline, nie zabraniają ci korzystania z niego.
źródło
rlwrap
wydaje się, że niewiele pomaga. Kiedy uruchamiamrlwrap php5
, wchodzęecho 1;
, a następnie wciskam return, a następnie Ctrl-D (koniec wprowadzania), wypisuje dane wejścioweecho 1;
zamiast wyniku (1). Dziękujemy za zwrócenie uwagi na problem z licencjonowaniem.rlwrap php5
i po prostuphp5
, oprócz poprzedniej, pozwalającej na edycję z linii poleceń. Jeśli wejdziesz<?php echo 1;?>
, dane wyjściowe są1
, ale w żadnym przypadku nie są emitowane natychmiast. Googling sugeruje, żephp5
po prostu nie jest to REPL PHP i powinieneś użyć czegoś takiego jak phpsh .<?php
lub?>
w interaktywnej powłoki. Zgadzam się, że php nie ma pełnej REPL. Ale używając wersji skompilowanej z działającym wsparciem readline (np. Pakiet dotdeb, który podłączyłem), wypisze 1 (lub cokolwiek to jest rzeczywiste wyjście) natychmiast po naciśnięciu enter. Zgadzam się, że nie ma znaczącej różnicy między rlwrap a brakiem odczytu (oprócz edycji linii i historii, które są ładne, ale nie tak przydatne jak natychmiastowe wyjście).Spróbuj tego:
Naciśnij Ctrl-d
źródło
<?php ?>
bloków. Nie byłam tego świadoma, co pokazuje, że wcześniej źle zrozumiałem Gillesa.Dla użytkowników Ubuntu php5-readline jest dodatkowym pakietem, który musisz zainstalować, aby mieć przydatny wiersz polecenia php:
Musiałem to zrobić na moim Ubuntu 14.04.
źródło
Żadne z tych nie działało dla mnie. Zamiast tego użyj http://www.phpsh.org/ .
źródło
W debian jessie i debian sid użyj:
następnie
źródło