Debian Wheezy'de kullanılabilir bir etkileşimli istemi olan bir PHP CLI'yı nasıl yükleyebilirim?


10

Debian Wheezy'ye php5-cli yüklediğimde (şu anda test ediliyor), interaktif bilgi istemi eksik readline desteği nedeniyle çok kullanılamıyor (hata 341868 ). Libreadline'a bağlı bir sürümü kurmanın en kolay yolu nedir (kullanılabilir satır düzenleme için)?

Yanıtlar:


10

Dotdeb Debian kararlı paketlerini kullanın . Belgeler bunu not etmese de, kararlı paketler şu anda Wheezy / test ile iyi çalışıyor. Talimatları izledikten sonra şunları yapın:

apt-get install php5-cli

kök olarak.


1
nup hala php>benim için istem yok :(
mulllhausen


4

Tüm PHP paketini yeniden derlemenizi öneren Gilles'in cevabına ek olarak PHP 5.4'ü de bekleyebilirsiniz. 5.4'te, gerekli tüm parçaların readline modülünde yer aldığı readline işlevini yeniden yapılandırdım, böylece tek başına oluşturabilirsiniz.

$ wget ...php-5.4.0.tar.bz2
$ tar xjf php-5.4.0.tar.bz2
$ cd php-5.4.0/ext/readline
$ phpize && ./configure && make

O zaman bir ile sona erecek modules/readline.sophp.ini yüklenebilir hangi ( make installo hareket edecek extension_dir)

Alternatif olarak dağıtıcı, okuma hattı modülünü gönderebilir (okuma satırına değil, libedit'e bağlı olabilir) ve etkileşimli mod kullanılabilir.

Tüm bunlar şimdi size yardımcı olmayacak (PHP 5.4. Henüz çıkmadı) ancak başkalarının bu soruyu daha sonra bulmalarına yardımcı olabilir.

Blogumda daha fazla ayrıntı: http://schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html

Düzenleme: Aslında blog yayını bu değişiklikten daha eski, ancak yine de ilginç olabilir. # 53878 hata raporunda küçük bir bilgi var ama çok da değil ... yayınlandıktan sonra http://php.net/commandline.interactive daha fazla olmalıdır.


Teşekkürler, bu yardımcı oldu. Ancak Ubuntu'da 2 sorunla karşılaşıldı. ( Libedit -dev yüklenerek düzeltildi) libedit kütüphanesi eksikti ve bu derleme hatası oluştu: bugs.php.net/bug.php?id=62612 Çözüm de var.
Dziamid

Kendimle nasıl çeliştiğimi komik! burada phpize vb öneririz hata "tamamen" bunu yapmak için destekli değil demek ;-)
johannes

3

Yükleyin rlwrapve çalıştırın rlwrap php5. Rlwrap genel bir okuma satırı sarıcısıdır, herhangi bir okuma-değerlendirme-yazdırma döngüsü için komut satırı sürümü ve geçmişi sağlar. Genel bir sarıcı olduğu için PHP'ye özgü bir tamamlama elde edemezsiniz.

Alternatif olarak, kaynak paketi alın ve readline desteğiyle yeniden oluşturun. Readline desteği yalnızca lisanslama sorunları nedeniyle dışarıda bırakıldı , ancak bu sorunlar sadece readline ile bağlantılı PHP5 dağıtımını yasaklıyor, bunu kullanmanızı yasaklamıyor.

apt-get source php5-cli
apt-get install build-essential fakeroot
apt-get build-dep php5-cli
cd php5-*/
# Edit debian/rules to configure with readline support
# Add an entry to debian/changelog to remember what you did
dpkg-buildpackage -rfakeroot -us -uc -b -nc

rlwrapfazla yardımcı görünmüyor. Koştuğumda rlwrap php5, girip echo 1;, sonra dönüşe ve sonra Ctrl-D'ye (giriş sonu) bastığımda echo 1;, sonuç (1) yerine giriş yapar . Bunun bir lisanslama sorunu olduğunu belirttiğiniz için teşekkür ederiz.
Matthew Flaschen

3
@Matthew: Ben PHP hakkında hiçbir şey bilmiyorum, ama lenny bu çalışıyorum, ben arasında hiçbir fark görmek rlwrap php5ve sadece php5eski sağlayan komut satırı sürümü dışındaki,. Girerseniz <?php echo 1;?>, çıktı olur 1, ancak her iki durumda da hemen yayılmaz. Google, php5bir PHP REPL olmadığını ve bunun yerine phpsh gibi bir şey kullanmanız gerektiğini önerir .
Gilles 'SO- kötü olmayı bırak

1
Eğer girmezseniz <?php veya ?>etkileşimli kabukta. Php tam bir REPL olmadığını kabul ediyorum. Ancak çalışan readline desteğiyle derlenen bir sürümü (örneğin, bağladığım dotdeb paketi) kullanarak, enter tuşuna bastıktan hemen sonra 1 (veya gerçek çıktı ne olursa olsun) çıktı verir. Ben rlwrap ve hiç okuma çizgisi arasında önemli bir fark olmadığını kabul ediyorum (satır düzenleme ve geçmişin yanı sıra, güzel ancak anında çıktı kadar kullanışlı değil).
Matthew Flaschen

@Matthew: Ah, yani readline desteği readline ile bağlantı kurmanın ötesinde, programın davranışını da değiştiriyor mu? Tuhaf görünüyor. Ardından kaynaktan yeniden oluşturabilir veya sizin için çalışıyorsa dotdeb paketlerini kullanabilirsiniz.
Gilles 'SO- kötü olmayı bırak

evet, PHP'de bir çok şey tuhaf görünüyor. ;) Ama bu alanda readline kod yolu sadece readline ile teğet olarak ilişkili gibi görünüyor.
Matthew Flaschen

3

Bunu dene:

$ php -a
Interactive mode enabled

<?php echo "hi!"; ?>

Basın Ctrl-d


5
Bu PHP yüklemek ile ilgisi yok gibi görünüyor
Michael Mrozek

1
Soruyu doğrudan cevaplamasa da, bu aslında çok faydalıdır. O içinde olduğunu göstermektedir olmayan -readline yolu PHP sadece içinde PHP kodu çalıştırır <?php ?>blokların. Bunun farkında değildim ve Gilles'i daha önce yanlış anladığımı gösteriyor.
Matthew Flaschen

3

Ubuntu kullanıcıları için, php5-readline, kullanılabilir bir php komut istemi almak için yüklemeniz gereken ek pakettir:

sudo apt-get install php5-cli php5-readline
sudo php5enmod readline

Bunu Ubuntu 14.04'ümde yapmak zorunda kaldım.



1

Debian jessie ve debian sid kullanımında:

sudo apt-get install php5 php5-readline

sonra

php -a
Interactive mode enabled

php > echo 1+2;
3
php >

0

Kadar basit sudo apt install php7.2-cli

[lucas:~] 20s 130 % sudo apt install php7.2-cli
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libavdevice57
  libegl-mesa0:i386 libegl1:i386 libgbm1:i386 libgsasl7 libkyotocabinet16v5
  libmailutils5 libmemcached11 libntlm0 libwayland-egl1-mesa:i386
  libwayland-server0:i386 mailutils-common mysql-client-core-5.7 shim
  ttf-dejavu-core webhttrack-common
Use 'sudo apt autoremove' to remove them.
Suggested packages:
  php-pear
The following NEW packages will be installed:
  php7.2-cli
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1.407 kB of archives.
After this operation, 4.956 kB of additional disk space will be used.
Get:1 http://br.archive.ubuntu.com/ubuntu bionic-updates/main amd64 php7.2-cli amd64 7.2.24-0ubuntu0.18.04.4 [1.407 kB]
Fetched 1.407 kB in 0s (6.666 kB/s)  
Selecting previously unselected package php7.2-cli.
(Reading database ... 320578 files and directories currently installed.)
Preparing to unpack .../php7.2-cli_7.2.24-0ubuntu0.18.04.4_amd64.deb ...
Unpacking php7.2-cli (7.2.24-0ubuntu0.18.04.4) ...
Setting up php7.2-cli (7.2.24-0ubuntu0.18.04.4) ...
update-alternatives: using /usr/bin/php7.2 to provide /usr/bin/php (php) in auto mode
update-alternatives: using /usr/bin/phar7.2 to provide /usr/bin/phar (phar) in auto mode
update-alternatives: using /usr/bin/phar.phar7.2 to provide /usr/bin/phar.phar (phar.phar) in auto mode
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
[lucas:~] % php --version
PHP 7.2.24-0ubuntu0.18.04.4 (cli) (built: Apr  8 2020 15:45:57) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.24-0ubuntu0.18.04.4, Copyright (c) 1999-2018, by Zend Technologies
[lucas:~] % php -a
Interactive mode enabled

php > 

Tabii ki, bu sadece PHP CLI. Composer'ı ve her şeyi CLI çalıştırmanızı sağlar. Apache veya Nginx gibi bir web sunucusu içermez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.