Quando instalo o php5-cli no Debian Wheezy (atualmente testando), o prompt interativo é muito inutilizável devido à falta de suporte à linha de leitura (bug 341868 ). Qual é a maneira mais fácil de instalar uma versão vinculada ao libreadline (para edição de linha utilizável)?
command-line
debian
php
readline
Matthew Flaschen
fonte
fonte
php>
prompt para mim :(Após instalar o php5-cli no dotdeb , instale o pacote php5-readline.
fonte
php5-readline
está disponível no arquivo principal de jessie e sid. E você não precisaphp5-cli
do dotdeb.Como complemento à resposta de Gilles, que sugere recompilar o pacote PHP completo, você também pode esperar pelo PHP 5.4. Na versão 5.4, reestruturei a funcionalidade readline de que todas as peças necessárias estão no módulo readline, para que você possa construir isso sozinho.
Então você terminará com um
modules/readline.so
arquivo que pode ser carregado do php.ini (make install
será movido paraextension_dir
)Como alternativa, o distribuidor pode enviar o módulo readline (talvez vinculado ao libedit, e não readline) e o modo interativo estará disponível.
Isso tudo não vai ajudá-lo agora (como o PHP 5.4 ainda não foi lançado), mas pode ajudar outras pessoas a encontrar essa pergunta mais tarde.
Mais alguns detalhes no meu blog: http://schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html
Editar: Na verdade, a postagem do blog é mais antiga que essa alteração, mas ainda pode ser interessante. Um pouco de informação está no relatório de bug # 53878, mas também não muito ... após o lançamento, http://php.net/commandline.interactive deve ter mais.
fonte
Instale
rlwrap
e executerlwrap php5
. O Rlwrap é um wrapper de linha de leitura genérico, que fornece edição e histórico da linha de comando para qualquer loop de leitura e avaliação. Como é um invólucro genérico, você não receberá nenhuma conclusão específica do PHP.Como alternativa, obtenha o pacote de origem e reconstrua-o com suporte à linha de leitura. O suporte ao Readline foi deixado de fora apenas devido a problemas de licenciamento , mas esses problemas proíbem apenas a distribuição do PHP5 vinculado ao readline, eles não proíbem o uso.
fonte
rlwrap
não parece ajudar muito. Quando corrorlwrap php5
, entroecho 1;
e pressiono return e, em seguida, Ctrl-D (final da entrada), ele gera a entrada emecho 1;
vez do resultado (1). Obrigado por observar que é um problema de licenciamento.rlwrap php5
e apenasphp5
, além da edição de linha de comando anterior. Se você digitar<?php echo 1;?>
, a saída será1
, mas não será emitida imediatamente nos dois casos. A pesquisa no Google sugere quephp5
simplesmente não é um PHP REPL, e você deve usar algo como phpsh .<?php
ou?>
no shell interativo. Concordo que o php não tem um REPL completo. Mas, usando uma versão compilada com o suporte a linha de leitura em funcionamento (por exemplo, o pacote dotdeb que vinculei), ela produzirá 1 (ou seja qual for a saída real) imediatamente após pressionar Enter. Concordo que não há diferença significativa entre rlwrap e nenhuma linha de leitura (além da edição de linhas e do histórico, que são legais, mas não tão úteis quanto a produção imediata).Tente o seguinte:
Pressione Ctrl-d
fonte
<?php ?>
blocos. Eu não estava ciente disso, e isso mostra que eu não entendi Gilles antes.Para usuários do Ubuntu, php5-readline é o pacote adicional que você precisa instalar para ter um prompt de comando utilizável em php:
Eu tive que fazer isso no meu Ubuntu 14.04.
fonte
Nada disso funcionou para mim. Use http://www.phpsh.org/ .
fonte
No debian jessie e no debian sid use:
então
fonte