2013-06-28 15 views
12

Win 7 makinemde xampp'den (5.4.7) etkileşimli olarak php çalıştırıyorum ve pencereden herhangi bir çıktı alamıyorum. Çeşitli çözümler aradım ve şimdiye kadar hiçbir şey işe yaramadı. İşte bir örnek: C: \ xampp> php -v PHP 5.4.7 (cli) (yerleşik: Sep 12 2012 23:48:31) Telif Hakkı (c) 1997-2012 PHP Grubu Zend Motoru v2.4.0 Telif Hakkı (c) 1998-2012 Zend TechnologiesWindows üzerinde etkileşimli PHP'den çıktı yok

C:\xampp>php -a 
Interactive mode enabled 

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

başka bir fikir ???

Ayrıca, php.ini dosyasında ve php.ini dosyasında output_buffing özelliğini Off olarak ayarlamayı denedim. Temel olarak amacım, çoğunlukla php ifadelerinin yanı sıra bazı yerel betiklerin çalıştırılması için bir test yatağı olarak kullanmaktır.

cevap

8

Interactive mode, , Interactive shell ile aynı değildir. Daha sonra, cmd veya linux'da bulunan bir kabuk gibi komutları kabul eder. Birincisi tüm komut dosyasında okur ve daha sonra çıktı ile döner. Snippet'in sonunda CTRL-Z'a isabet ederseniz, çıktıyı döndürmelidir. Daha fazla bilgi için (first comment).

+0

s. Ctrl-Z çalışmıyor, bazılarının önerdiği gibi ctrl-d çalışmıyor. Ama bu bağlantı, Windows'da etkileşimli bir php almak için oldukça cesaret kırıcı geliyor. Belki de Cygwin'e gitmem gerekiyor mu, yoksa böyle yapmak için mi? – BaliDave

+0

Cyphwin ile birlikte PHPSH'yi bir kez denedim, Facebook'tan geliyor ve çalışmasını sağlamak için bazı Python kullanıyorum ama biraz falseden sonra işe yaradı. http://www.phpsh.org/ – WesleyE

+0

** Etkileşimli modunuz ** varsa, başlangıçta ' kurdtpage

10

Ben php -a girdikten sonra yazdığınız ilk satır sizinkine biraz farklıdır:

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

sıkıntı Windows komut istemine döner olmasıdır ve php yazarak tutmak zorunda -a ve < Daha fazla yazabilmeniz için? php.

Ben bir kısayol oluşturdu yazarak biraz kaydetmek için, sağ tıklandığında onun Özellikler iletişim kutusunu açtı ve Hedef metin kutusuna aşağıdaki komutu girdi:

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

Bu kısayol, etkileşimli modda bir PHP istemi açar. Alternatif olarak, bu bir interaktif modda başlatır ve PHP anahtarları listeler:

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

+0

Sonunda, çalışan bir şey (Windows 8.1'de) :) Thx – gkalpak

0

kullanmak için pencereler. Windows ortamınızda doğrudan bir PATH değişkenine sahip olduğunuzdan emin olun. Yeniden başlatma gerektirebilir. Gitbash/cmd/raylar shell/nodejs vb. Kullanın ama herhangi bir fark yaratmamalı.komutuyla Açık cmd

Kontrol php şu şekildedir: örneğin bir kez etkin kodunuzu girin -a php (: tüm iyi ile php versiyonunu vs vs

yük interaktif mod kaydedilip edilmediğini -v php her satır ^ z ctrl tuşunu ve birlikte z anahtarını bu küçük parçacığını çalışır presleme kabuk çıktı ama anında php interaktif modda dışına çıkar) satır başı vardır

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

(11 dönecektir)

2

ben taklit interaktif php kabuk için cmd komut dosyası yapmak :-) ha matematikte gerçekten iyiydi. Her komutu bir ortam değişkenine okur ve her komutu çalıştırmak için yeni bir PHP örneği başlatır. yerine "Interactive kabuk" nin

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

Kullanabilir Sadece açıklama – mjs

+2

kodundan ziyade bir açıklama Buradaki problem, tanımladığınız değişkenleri veya işlevleri hatırlamayacaktır. – felixfbecker

7

siz "php -a" başlangıç ​​ve görürseniz "etkin Etkileşimli modu", daha sonra php kopyanız olasılıkla taleb desteği olmadan derlenmiş ve hiçbir interaktif yoktur edildi kabuk.

olarak bildiğim kadarıyla, PHP'nin Windows kopyaları tüm Taleb desteği olmadan derlenmektedir. Bu, Windows'da "-a" seçeneğinin değerini (en azından benim için) yapar.

bu (bu durumda php bir linux kopyasından çıktı) gibi çalışmak gerekiyordu "php -a"

: PHP Windows nüshasında "php -a" interaktif

$ php -a 
Interactive shell 

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

değil

Kabuk, ve böylece etkili bir şekilde "-a" seçeneğini bırakarak aynı şekilde çalışır. senaryo bitene kadar EOF karakteri yazmak için F6 veya CTRL + Z kullanın (^ Z gibi görünür):

C:\>php -a 
Interactive mode enabled 

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

kapalı bırakın "-a" ve (eksi metin "Etkileşimli mod esasen aynı sonuçları elde etkin ":

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

Eğer 'php -a' ve metin olsun 'Etkileşimli mod etkin' ve (genellikle cli.prompt için çıktı alamadım 'php>'), o zaman kontrol etmelidir "readline" modülünün listelendiğinden emin olmak için php sürümünüzün ("php -v" ile) ve php modüllerinin (php -m ile "php -m") olduğundan emin olunuz.

İlgili konular