Ketika saya menginstal php5-cli pada Debian Wheezy (saat ini sedang diuji), prompt interaktif sangat tidak dapat digunakan karena tidak ada dukungan readline (bug 341868 ). Apa cara termudah untuk menginstal versi yang ditautkan dengan libreadline (untuk mengedit garis yang dapat digunakan)?
command-line
debian
php
readline
Matthew Flaschen
sumber
sumber
php>
prompt untuk saya :(Setelah menginstal php5-cli dari dotdeb , instal paket php5-readline.
sumber
php5-readline
ini tersedia di arsip utama jessie dan sid. Dan Anda tidak perluphp5-cli
dari dotdeb.Sebagai tambahan untuk jawaban oleh Gilles yang menyarankan kompilasi ulang paket PHP lengkap Anda juga dapat menunggu untuk PHP 5.4. Di 5.4 saya merestrukturisasi fungsionalitas readline bahwa semua bagian yang diperlukan ada dalam modul readline, sehingga Anda dapat membangunnya sendiri.
Maka Anda akan berakhir dengan
modules/readline.so
yang dapat diambil dari php.ini (make install
akan dipindahkan keextension_dir
)Atau distributor dapat mengirimkan modul readline (mungkin terkait dengan libedit, bukan readline) dan mode interaktif akan tersedia.
Ini semua tidak akan membantu Anda sekarang (karena PHP 5.4. Belum keluar) tetapi mungkin membantu orang lain menemukan pertanyaan ini nanti.
Beberapa detail lainnya di blog saya: http://schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html
Sunting: Sebenarnya postingan blog lebih tua dari perubahan ini, tetapi mungkin masih menarik. Sedikit informasi ada di laporan bug # 53878 tetapi tidak banyak juga ... setelah rilis http://php.net/commandline.interactive seharusnya memiliki lebih banyak.
sumber
Instal
rlwrap
dan jalankanrlwrap php5
. Rlwrap adalah pembungkus readline umum, ia menyediakan edisi baris perintah dan sejarah untuk setiap loop read-eval-print. Karena ini pembungkus generik, Anda tidak akan mendapatkan penyelesaian khusus PHP.Atau, dapatkan paket sumber dan buat kembali dengan dukungan readline. Dukungan Readline hanya ditinggalkan karena masalah perizinan , tetapi masalah ini hanya melarang mendistribusikan PHP5 yang dikaitkan dengan readline, mereka tidak melarang Anda menggunakannya.
sumber
rlwrap
sepertinya tidak banyak membantu. Ketika saya menjalankanrlwrap php5
, masukecho 1;
, lalu tekan kembali kemudian Ctrl-D (akhir input), itu output inputecho 1;
bukan hasil (1). Terima kasih telah memperhatikan bahwa ini masalah lisensi.rlwrap php5
dan hanyaphp5
, selain yang sebelumnya memungkinkan edisi baris perintah. Jika Anda memasukkan<?php echo 1;?>
, hasilnya adalah1
, tetapi tidak segera dipancarkan dalam kedua kasus. Googling menyarankan bahwaphp5
itu bukan PHP REPL, dan Anda harus menggunakan sesuatu seperti phpsh .<?php
atau?>
di shell interaktif. Saya setuju bahwa php tidak memiliki REPL penuh. Tetapi menggunakan versi yang dikompilasi dengan dukungan readline yang berfungsi (mis. Paket dotdeb yang saya tautkan), itu akan menampilkan 1 (atau apa pun output sebenarnya) segera setelah Anda menekan enter. Saya setuju tidak ada perbedaan yang signifikan antara rlwrap dan tidak ada readline sama sekali (selain pengeditan baris dan sejarah, yang bagus tapi tidak berguna sebagai output langsung).Coba ini:
Tekan Ctrl-d
sumber
<?php ?>
blok. Saya tidak menyadarinya, dan itu menunjukkan saya salah paham terhadap Gilles sebelumnya.Untuk pengguna Ubuntu, php5-readline adalah paket tambahan yang perlu Anda instal untuk memiliki prompt perintah php yang dapat digunakan:
Saya harus melakukan ini di Ubuntu 14.04 saya.
sumber
Tak satu pun dari ini bekerja untuk saya. Gunakan http://www.phpsh.org/ sebagai gantinya.
sumber
Dalam debian jessie dan digunakan debian sid:
kemudian
sumber