Cuando instalo php5-cli en Debian Wheezy (actualmente en pruebas), el mensaje interactivo es muy inutilizable debido a la falta de soporte de readline (error 341868 ). ¿Cuál es la forma más fácil de instalar una versión vinculada a libreadline (para la edición de línea utilizable)?
command-line
debian
php
readline
Matthew Flaschen
fuente
fuente
php>
aviso para mí :(Después de instalar php5-cli desde dotdeb , instale el paquete php5-readline.
fuente
php5-readline
está disponible en el archivo principal de jessie y sid. Y no necesitas elphp5-cli
de dotdeb.Como una adición a la respuesta de Gilles, que sugiere recompilar el paquete PHP completo, también puede esperar PHP 5.4. En 5.4 reestructuré la funcionalidad de línea de lectura de que todas las partes requeridas están en el módulo de línea de lectura, para que pueda construirla de manera independiente.
Luego terminará con un
modules/readline.so
que se puede cargar desde php.ini (make install
lo moverá aextension_dir
)Alternativamente, el distribuidor puede enviar el módulo readline (tal vez vinculado contra libedit, no readline) y el modo interactivo estará disponible.
Todo esto no lo ayudará ahora (ya que PHP 5.4 aún no está disponible), pero podría ayudar a otros a encontrar esta pregunta más adelante.
Algunos detalles más en mi blog: http://schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html
Editar: en realidad, la publicación del blog es anterior a este cambio, pero aún puede ser interesante. Hay un poco de información en el informe de error # 53878 pero tampoco mucha ... después del lanzamiento http://php.net/commandline.interactive debería tener más.
fuente
Instalar
rlwrap
y ejecutarrlwrap php5
. Rlwrap es un contenedor genérico de línea de lectura, proporciona edición de línea de comando e historial para cualquier ciclo de lectura-evaluación-impresión. Dado que es un contenedor genérico, no obtendrá ninguna finalización específica de PHP.Alternativamente, obtenga el paquete fuente y vuelva a generarlo con el soporte de readline. El soporte de Readline solo se dejó de lado debido a problemas de licencia , pero estos problemas solo prohíben distribuir PHP5 vinculado con readline, no le prohíben usarlo.
fuente
rlwrap
no parece ayudar mucho Cuando corrorlwrap php5
, ingresoecho 1;
, luego presiono regresar y luego Ctrl-D (final de la entrada), emite la entrada enecho 1;
lugar del resultado (1). Gracias por señalar que es un problema de licencia.rlwrap php5
y solophp5
, aparte de la anterior edición de línea de comandos. Si ingresa<?php echo 1;?>
, la salida es1
, pero no se emite inmediatamente en ninguno de los casos. Buscar en Google sugiere quephp5
simplemente no es un PHP REPL, y en su lugar deberías usar algo como phpsh .<?php
o?>
en el shell interactivo. Estoy de acuerdo en que php no tiene una REPL completa. Pero al usar una versión compilada con soporte de línea de lectura (por ejemplo, el paquete dotdeb que vinculé), generará 1 (o lo que sea la salida real) inmediatamente después de presionar enter. Estoy de acuerdo en que no hay una diferencia significativa entre rlwrap y ninguna línea de lectura (además de la edición de línea y el historial, que son agradables pero no tan útiles como la salida inmediata).Prueba esto:
La prensa Ctrl-d
fuente
<?php ?>
bloques. No estaba al tanto de eso, y demuestra que antes había entendido mal a Gilles.Para los usuarios de Ubuntu, php5-readline es el paquete adicional que necesita instalar para tener un símbolo del sistema php utilizable:
Tenía que hacer esto en mi Ubuntu 14.04.
fuente
Ninguno de estos funcionó para mí. Utilice http://www.phpsh.org/ en su lugar.
fuente
En debian jessie y en debian sid usa:
luego
fuente