2011-01-29 11 views
8

Sto cercando di eseguire PHP in modo interattivo dalla finestra del terminale e quando ho eseguito il comandomac os modalità php intratactive non ha pronta

php -a 

si dice "modalità interattiva enabled", ma non mi mostra il prompt "php->" che dovrebbe. Devo premere il controllo z per uscire dalla modalità interattiva, ma posso eseguire qualsiasi comando mentre la modalità interattiva è "abilitato"

Qualcuno sa come risolvere questo

risposta

5

La shell interattiva PHP richiede che GNU readline o libedit è compilato staticamente nel binario PHP. Molte distribuzioni forniscono solo librerie condivise contenenti solo l'estensione readline.

Se si compila il PHP da soli fanno

./configure --with-readline 

o

./configure --with-libedit 

(si noti che è, probabilmente, non può ridistribuire i binari PHP legati alla readline a causa di incompatibilità tra GPL e la licenza PHP, dovresti usare libedit allora, ma dubito che tu voglia ridistribuire comunque PHP. L'uso è certamente ok, non importa per le tue applicazioni di base PHP, ma questo è uno dei motivi per cui questo non funziona per la maggior parte delle distro ...)

Edit: Ho appena presentato un bug di PHP per abilitare la modalità readline con una build condiviso, troppo, forse ho trovato il tempo per la sua attuazione: http://bugs.php.net/bug.php?id=53878

+1

c'è un modo è possibile determinare se questi sono installati o non dovrebbero essere elencati in informazioni php? – mcgrailm

+1

Se è installato, phpinfo elencherà readline. Puoi anche controllare 'php -m'. Per vedere se è stato staticamente provare a eseguire 'php -nm'. Se "readline" è elencato dovrebbe funzionare. – johannes

+1

[Modalità interattiva shell vs interattiva] (http://www.php.net/manual/en/features.commandline.interactive.php#108006) – sam

2

C'è un'altra soluzione eccellente (creato da Facebook btw) phpsh

Nelle loro parole:

phpsh è una shell interattiva per php che presenta cronologia di readline, completamento scheda, accesso rapido alla documentazione. È stato sviluppato su Facebook e, ironia della sorte, è scritto principalmente in python. È open source e rilasciato con una licenza BSD modificata.

sto usando per un po 'ed è davvero buono, per molti versi ancora meglio che php -a