2013-06-28 56 views
12

Tôi đang chạy php tương tác từ xampp (5.4.7) trên máy tính Win 7 của mình và không thể nhận được bất kỳ đầu ra nào từ cửa sổ. Tôi đã tìm kiếm xung quanh các giải pháp khác nhau và không có gì cho đến nay đã làm việc. Đây là mẫu: C: \ xampp> php -v PHP 5.4.7 (cli) (được xây dựng: ngày 12 tháng 9 năm 2012 23:48:31) Bản quyền (c) 1997-2012 Nhóm PHP Zend Engine v2.4.0 , Bản quyền (c) 1998-2012 Zend TechnologiesKhông có đầu ra từ tương tác PHP trên Windows

C:\xampp>php -a 
Interactive mode enabled 

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

bất kỳ ý tưởng nào khác ???

Tôi cũng đã thử php -an và thiết lập output_buffing Tắt trong php.ini, tất cả đều không có.

Về cơ bản, mục tiêu của tôi chủ yếu là sử dụng điều này làm thử nghiệm cho các biểu thức php cũng như chạy một số tập lệnh cục bộ.

Trả lời

8

Interactive modekhông giống như Interactive shell. Sau đó chấp nhận các lệnh như trong cmd hoặc một shell được tìm thấy trong linux. Chữ cái đầu tiên đọc trong tập lệnh toàn bộ và sau đó trả về với đầu ra. Nếu bạn nhấn CTRL-Z ở cuối đoạn mã, nó sẽ trả về kết quả.

Kiểm tra tại đây: http://php.net/manual/en/features.commandline.interactive.php để biết thêm thông tin (đặc biệt là first comment).

+0

Cảm ơn S. Ctrl-Z không hoạt động, cũng như ctrl-d như một số gợi ý. Nhưng liên kết đó nghe có vẻ khá chán nản khi nhận được một php tương tác trong Windows. Có lẽ tôi cần phải đi đến Cygwin hoặc như vậy để làm điều này? – BaliDave

+0

Tôi đã thử PHPSH một lần kết hợp với Cygwin, nó từ Facebook và sử dụng một số Python để làm cho nó hoạt động nhưng nó đã làm việc ok sau khi một số fiddeling. http://www.phpsh.org/ – WesleyE

+0

Nếu bạn có ** chế độ tương tác **, hãy đảm bảo bạn nhập ' kurdtpage

10

Dòng đầu tiên tôi gõ sau khi nhập php -a là hơi khác nhau để bạn:

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

Các phiền toái là nó trở về dấu nhắc lệnh Windows và bạn phải tiếp tục gõ php -a< ? php trước khi bạn có thể nhập thêm.

Để tiết kiệm một chút gõ Tôi tạo ra một phím tắt, phải nhấp vào nó, mở hộp thoại Properties của nó và bước vào lệnh sau trong Target hộp văn bản:

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

Phím tắt này mở lời nhắc PHP ở chế độ tương tác. Ngoài ra, chương trình này bắt đầu trong chế độ tương tác và liệt kê các công tắc PHP:

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

+0

Cuối cùng, một thứ hoạt động (trên Windows 8.1) :) Thx – gkalpak

0

Để sử dụng trong các cửa sổ. Đảm bảo bạn có biến PATH tới php trực tiếp trong môi trường cửa sổ của bạn. Có thể yêu cầu khởi động lại. Sử dụng gitbash/cmd/rails shell/nodejs vv nhưng không tạo nên bất kỳ sự khác biệt nào.Mở cmd

Kiểm tra php với lệnh: php -v nếu tất cả tốt populates phiên bản php vv vv

tải chế độ tương tác với: php -a nhập mã xác nhận một lần được kích hoạt, ví dụ như sau (mỗi dòng có vận chuyển trở lại) các^z là sản phẩm vỏ cách nhấn phím ctrl và phím z cùng này chạy đoạn nhỏ của bạn, nhưng ngay lập tức bật bạn ra khỏi chế độ tương tác php

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

(sẽ trả về 11) thực sự tốt ở môn toán ha :-)

2

Tôi tạo kịch bản cmd để mô phỏng trình bao tương tác php. Nó đọc mỗi lệnh vào một biến môi trường và sau đó bắt đầu một thể hiện mới của PHP để chạy mỗi lệnh.

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

Có thể sử dụng một số giải thích, chứ không chỉ là mã số – mjs

+2

Vấn đề với điều này là nó sẽ không nhớ các biến hoặc hàm bạn định nghĩa – felixfbecker

7

Nếu bạn bắt đầu "php -a" và xem "Interactive chế độ kích hoạt" thay vì "Interactive vỏ", sau đó bản sao của php được khả năng biên soạn không nơi nương tựa readline, và không có tương tác vỏ.

Theo như tôi biết, các bản sao Windows của PHP đều được biên dịch mà không có hỗ trợ readline. Điều này làm cho tùy chọn "-a" vô giá trị trong Windows (ít nhất là với tôi).

"php -a" là nghĩa vụ phải làm việc như thế này (đầu ra từ một bản sao linux của php trong trường hợp này):

$ php -a 
Interactive shell 

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

"php -a" trong một bản sao Windows của PHP không phải là một tương tác vỏ, và như vậy có hiệu quả hoạt động giống như rời khỏi tùy chọn "-a". Sử dụng F6 hoặc Ctrl + Z để gõ kí tự EOF để hoàn thành kịch bản (xuất hiện như^Z):

C:\>php -a 
Interactive mode enabled 

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

Để lại ngoài khơi "-a" và bạn sẽ có được chủ yếu là kết quả tương tự (trừ văn bản "chế độ tương tác kích hoạt ":

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

Nếu bạn sử dụng 'php -a' và nhận được văn bản 'chế độ tương tác kích hoạt' và không nhận được đầu ra cho cli.prompt (thường là 'php>'), sau đó bạn nên kiểm tra phiên bản php của bạn (với "php-v") để đảm bảo ít nhất là 5.1 và các mô-đun php của bạn (với "php -m") để đảm bảo mô-đun "readline" được liệt kê.