Lorsque j'installe php5-cli sur Debian Wheezy (en cours de test), l'invite interactive est très inutilisable en raison du manque de prise en charge de la ligne de lecture (bug 341868 ). Quelle est la façon la plus simple d'installer une version liée à libreadline (pour l'édition de ligne utilisable)?
command-line
debian
php
readline
Matthew Flaschen
la source
la source
php>
invite pour moi :(Après avoir installé php5-cli à partir de dotdeb , installez le paquet php5-readline.
la source
php5-readline
est disponible dans les archives principales de Jessie et Sid. Et vous n'avez pas besoin de laphp5-cli
dotdeb.En complément de la réponse de Gilles qui suggère de recompiler le package PHP complet, vous pouvez également attendre PHP 5.4. Dans 5.4, j'ai restructuré la fonctionnalité de ligne de lecture pour que toutes les pièces requises se trouvent dans le module de ligne de lecture, afin que vous puissiez créer celle-ci de manière autonome.
Ensuite, vous vous retrouverez avec un
modules/readline.so
fichier qui peut être chargé à partir de php.ini (make install
le déplacera versextension_dir
)Alternativement, le distributeur peut expédier le module readline (peut-être lié à libedit, pas readline) et le mode interactif sera disponible.
Tout cela ne vous aidera pas maintenant (car PHP 5.4 n'est pas encore disponible) mais pourrait aider d'autres personnes à trouver cette question plus tard.
Quelques détails supplémentaires sur mon blog: http://schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html
Edit: En fait, le billet de blog est plus ancien que ce changement, mais pourrait toujours être intéressant. Un peu d'informations est dans le rapport de bogue # 53878 mais pas beaucoup non plus ... après la publication http://php.net/commandline.interactive devrait en avoir plus.
la source
Installez
rlwrap
et exécutezrlwrap php5
. Rlwrap est un wrapper de ligne de lecture générique, il fournit l'édition et l'historique de la ligne de commande pour toute boucle de lecture-évaluation-impression. Comme il s'agit d'un wrapper générique, vous n'obtiendrez aucune complétion spécifique à PHP.Vous pouvez également obtenir le package source et le reconstruire avec le support readline. La prise en charge de Readline n'a été omise qu'en raison de problèmes de licence , mais ces problèmes interdisent uniquement la distribution de PHP5 lié à readline, ils ne vous interdisent pas de l'utiliser.
la source
rlwrap
ne semble pas beaucoup aider. Lorsque je coursrlwrap php5
, saisisecho 1;
, puis appuie sur retour puis sur Ctrl-D (fin d'entrée), il sort l'entréeecho 1;
au lieu du résultat (1). Merci de noter qu'il s'agit d'un problème de licence.rlwrap php5
et justephp5
, à part l'ancienne autorisant l'édition en ligne de commande. Si vous entrez<?php echo 1;?>
, la sortie est1
, mais elle n'est pas émise immédiatement dans les deux cas. La recherche sur Google suggère que cephp5
n'est tout simplement pas un PHP REPL, et vous devriez utiliser quelque chose comme phpsh à la place.<?php
ou?>
dans le shell interactif. Je suis d'accord que php n'a pas de REPL complet. Mais en utilisant une version compilée avec un support de lecture en ligne fonctionnel (par exemple le package dotdeb que j'ai lié), il affichera 1 (ou quelle que soit la sortie réelle) immédiatement après avoir appuyé sur Entrée. Je suis d'accord qu'il n'y a pas de différence significative entre rlwrap et pas de ligne de lecture du tout (à part l'édition de ligne et l'historique, qui sont agréables mais pas aussi utiles que la sortie immédiate).Essaye ça:
La presse Ctrl-d
la source
<?php ?>
blocs. Je n'étais pas au courant de cela, et cela montre que j'ai mal compris Gilles plus tôt.Pour les utilisateurs d'Ubuntu, php5-readline est le package supplémentaire que vous devez installer pour avoir une invite de commande php utilisable:
Je devais le faire sur mon Ubuntu 14.04.
la source
Rien de tout cela n'a fonctionné pour moi. Utilisez plutôt http://www.phpsh.org/ .
la source
Dans Debian Jessie et dans Debian Sid, utilisez:
puis
la source