2013-06-28 66 views
12

我從交互XAMPP(5.4.7)我的Win 7的機器上運行PHP和無法擺脫的窗口中的任何輸出。我搜索了各種解決方案,迄今爲止沒有任何工作。下面是一個示例: C:\ xampp> php -v PHP 5.4.7(cli)(built:Sep 12 2012 23:48:31) Copyright(c)1997-2012 The PHP Group Zend Engine v2.4.0 ,Copyright(c)1998-2012 Zend Technologies沒有輸出PHP互動在Windows

C:\xampp>php -a 
Interactive mode enabled 

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

any other ideas ???

我也試過PHP -an和設置output_buffing關閉在php.ini,都無濟於事。

基本上我的目標是主要是爲了以此作爲PHP表達式測試平臺以及運行一些本地腳本。

回答

8

Interactive mode不是Interactive shell相同。後者接受cmd中的命令或linux中的shell。在整個腳本中的第一個讀取信息,然後與輸出返回。如果您將在片段的最後打到CTRL-Z它應該返回的輸出。

入住這裏:http://php.net/manual/en/features.commandline.interactive.php瞭解更多信息(尤其是first comment)。

+0

Thank秒。 Ctrl-Z不起作用,ctrl-d也不如某些建議。但是這個鏈接對於在Windows中獲得一個交互式的php聽起來非常令人沮喪。也許我需要去Cygwin或者這樣做? – BaliDave

+0

我試過PHPSH,一次和Cygwin一起使用,它來自Facebook,並使用一些Python使其工作,但它確實在一些小動作後工作。 http://www.phpsh.org/ – WesleyE

+0

如果你有**交互模式**,請確保你在開始時輸入「<?php」 – kurdtpage

10

我進入php -a後鍵入第一行是略有不同,你的:

<?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> 

可惡的是,它返回到Windows命令提示符,你必須保持打字PHP -a< ?php,然後才能輸入更多。

爲了節省打字,我創建一個快捷方式的位,右鍵單擊它,打開其屬性對話框,並在目標文本框中輸入以下命令:

C:\ WINDOWS \ System32 \ cmd.exe/k「php -a」

此快捷方式以交互模式打開PHP提示符。或者,這一個在交互模式下啓動,並列出了PHP開關:

C:\ WINDOWS \ SYSTEM32 \ CMD.EXE/K 「PHP -h & PHP的-a」

+0

最後,一些可用的東西(在Windows 8.1上):) Thx – gkalpak

0

在使用視窗。確保你有一個PATH變量直接在你的Windows環境中使用php。可能需要重啓。使用gitbash/cmd/rails shell/nodejs等,但不應該有任何區別。打開CMD

檢查PHP使用命令: PHP -v 如果所有好的填充的PHP版本等等等等

負載互動模式: PHP -a 一次輸入驗證碼啓用,舉例如下(每一行都有回車) 的^ z是按下Ctrl鍵和Z鍵一起 這個運行你的小片段的外殼的輸出,但是瞬間彈出你出去的PHP交互模式

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

(將返回11)真的很擅長數學哈:-)

2

我製作了模擬交互式php shell的cmd腳本。它將每個命令讀入一個環境變量,然後啓動一個新的PHP實例來運行每個命令。而不是「互動

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

可以使用一些解釋,而不僅僅是代碼 – mjs

+2

問題在於它不會記住你定義的變量或函數 – felixfbecker

7

如果你開始「PHP -a」,看到「啓用了交互模式」,那麼你的PHP的副本可能沒有編譯readline的支持,沒有交互式貝殼。

據我所知,Windows的PHP副本都是在沒有readline支持的情況下編譯的。這使得「-a」選項在Windows中毫無價值(至少對我而言)。

「PHP -a」應該是這樣的(從PHP的一個Linux拷貝輸出在這種情況下)工作:

$ php -a 
Interactive shell 

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

「PHP -a」在PHP中的一個Windows副本不是一個交互式外殼,所以有效的工作方式與「-a」選項不同。使用F6或CTRL + Z鍵入EOF字符完成了劇本(顯示爲^ Z):

C:\>php -a 
Interactive mode enabled 

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

離開過的「-a」,你會得到基本相同的結果(減去文本「交互模式啓用「:

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

如果使用‘PHP -a’,並得到文本‘啓用交互模式’並沒有得到cli.prompt輸出(通常是‘PHP>’),那麼你應該檢查你的php版本(帶有「php -v」)確保它至少爲5.1,並且你的php模塊(帶有「php -m」)確保列出了「readline」模塊。