2013-06-28 17 views
12

Sto eseguendo php in modo interattivo da xampp (5.4.7) sulla mia macchina Win 7 e non posso ottenere alcun output dalla finestra. Ho cercato varie soluzioni e finora non ha funzionato. Ecco un esempio: C: \ xampp> php -v PHP 5.4.7 (cli) (versione: 12 settembre 2012 23:48:31) Copyright (c) 1997-2012 Il gruppo PHP Zend Engine v2.4.0 , Copyright (c) 1998-2012 Zend TechnologiesNessun output da PHP interattivo su Windows

C:\xampp>php -a 
Interactive mode enabled 

<? 
echo "hi"; 
printf "hi"; 
fwrite (STDOUT, "hi"); 

altre idee ???

Ho anche provato php -an e impostato output_buffing su php.ini, tutto inutilmente.

Fondamentalmente il mio obiettivo è principalmente quello di usarlo come banco di prova per le espressioni php e per eseguire alcuni script locali.

risposta

8

Interactive mode è non uguale a Interactive shell. Più tardi accetta comandi come in cmd o una shell trovata in linux. Il primo si legge nello script intero e quindi restituisce con l'output. Se si colpisce CTRL-Z alla fine dello snippet, è necessario restituire l'output.

Controllare qui: http://php.net/manual/en/features.commandline.interactive.php per ulteriori informazioni (in particolare lo first comment).

+0

Grazie S. Ctrl-Z non funziona, né ctrl-d come alcuni suggeriscono. Ma quel collegamento suona piuttosto scoraggiante per ottenere un php interattivo in Windows. Forse ho bisogno di andare a Cygwin o simili per fare questo? – BaliDave

+0

Ho provato PHPSH una volta in combinazione con Cygwin, è da Facebook e usa alcuni Python per farlo funzionare, ma ha funzionato bene dopo alcune fiddeling. http://www.phpsh.org/ – WesleyE

+0

Se hai ** modalità interattiva **, assicurati di digitare ' kurdtpage

10

La prima riga di tipo I dopo essere entrato php -a è leggermente diverso dal vostro:

<?php   //press Enter 
echo 'This '; //press Enter 
echo 'works'; //press Enter 
//Press Ctrl+z on this line to get a ^Z, then press Enter 
This works 
C:\Windows\System32> 

Il fastidio è che si torna al prompt dei comandi di Windows e si deve continuare a digitare php -a e < ? php prima di poter digitare di più.

Per salvare un po 'di digitare ho creato un collegamento, fare clic su di esso, ha aperto la sua finestra di dialogo Proprietà ed è entrato il seguente comando nella casella di di testo Obiettivo:

C: \ Windows \ System32 \ cmd.exe/k "php -a"

Questo collegamento apre un prompt PHP in modalità interattiva. In alternativa, questo si avvia in modalità interattiva e sono elencate le opzioni di PHP:

C: \ Windows \ System32 \ cmd.exe/k "php -h & php -a"

+0

Infine, qualcosa che funziona (su Windows 8.1) :) Thx – gkalpak

0

Per utilizzare in finestre. Assicurati di avere una variabile PATH per php direttamente nel tuo ambiente Windows. Potrebbe richiedere il riavvio. Usa gitbash/cmd/rails shell/nodejs ecc. Ma non dovrebbe fare alcuna differenza.Aprire cmd

Verificare php con il comando: php -v se tutto il bene popola la versione di PHP etc etc

carico modalità interattiva con: php -a inserire il codice una volta abilitato, ad esempio come segue (ogni linea ha ritorno a capo) il^Z è l'uscita della shell di premere il tasto CTRL e il tasto Z insieme questo esegue il piccolo frammento, ma immediatamente si salta fuori modalità interattiva php

<?php 
$x = 5; 
$y = 6; 
$z = $x + $y; 
echo $z; 
?> 
^z 

(restituirà 11) è stato davvero bravo in matematica ha :-)

2

Faccio script cmd per emulare shell PHP interattiva. Legge ogni comando in una variabile di ambiente e quindi avvia una nuova istanza di PHP per eseguire ogni comando.

@echo off 
:loop 
    set /p php="php> " %=% 
    php -r "%php%" 
    echo. 
goto loop 
+1

Potrebbe usare qualche spiegazione, piuttosto che solo il codice – mjs

+2

Il problema con questo è che non ricorderà variabili o funzioni definite dall'utente – felixfbecker

7

Se si avvia "php -a" e vedere "Interactive modalità abilitato" invece di "Interactive guscio", allora la vostra copia di PHP è stato probabilmente compilato senza il supporto readline, e non c'è interattivo conchiglia.

Per quanto ne so, le copie di Windows di PHP sono tutte compilate senza supporto readline. Ciò rende l'opzione "-a" senza valore in Windows (almeno per me).

"-a php" dovrebbe funzionare come questo (in uscita da una copia di Linux di php in questo caso):

$ php -a 
Interactive shell 

php > echo 5+8; 
13 
php > exit 
$ 

"php -a" in una copia di Windows di PHP non è un sistema interattivo shell, e funziona così efficacemente come lasciare l'opzione "-a". Utilizzare F6 o CTRL + Z per digitare il carattere EOF per finire lo script (appare come^Z):

C:\>php -a 
Interactive mode enabled 

<?php 
echo 5+8; 
?> 
^Z 
13 
C:\> 

lasciare fuori la "-a" e si ottiene essenzialmente gli stessi risultati (meno il testo "modalità interattiva Enabled ":

C:\>php 
<?php 
echo 5+8; 
?> 
^Z 
13 
C:\> 

Se si utilizza 'php -a' e ottenere il testo 'modalità interattiva abilitato' e non si ottiene l'uscita per cli.prompt (di solito 'php>'), allora si dovrebbe verificare la tua versione php (con "php -v") per assicurarti che sia almeno 5.1 e i tuoi moduli php (con "php -m") per assicurarti che il modulo "readline" sia elencato