web-dev-qa-db-ja.com

PHP Windowsでインタラクティブ)からの出力はありません

Win 7マシンでxampp(5.4.7)からインタラクティブにphpを実行していますが、ウィンドウから出力を取得できません。私はさまざまな解決策を探しましたが、これまでのところ何も機能していません。サンプルは次のとおりです。C:\ xampp> php -v PHP 5.4.7(cli)(ビルド:2012年9月12日23:48:31)Copyright(c)1997-2012 PHP Group Zend Engine v2.4.0、Copyright(c)1998-2012 Zend Technologies

C:\xampp>php -a
Interactive mode enabled

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

他のアイデア???

また、php-anを試し、php.iniでoutput_buffing Offを設定しましたが、すべて役に立ちませんでした。

基本的に私の目的は、これをphp式のテストベッドとして使用することと、いくつかのローカルスクリプトを実行することです。

17
BaliDave

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と入力し続ける必要があることです。

入力を少し節約するために、ショートカットを作成して右クリックし、[プロパティ]ダイアログを開いて、Targetに次のコマンドを入力しました。テキストボックス:

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

このショートカットは、PHPインタラクティブモードでプロンプトを開きます。または、これはインタラクティブモードで開始し、PHPスイッチを一覧表示します:

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

14
Mr.Oz

Interactive modeInteractive Shellと同じではありません。後者は、cmdやLinuxにあるシェルのようなコマンドを受け入れます。最初のスクリプトはwholeスクリプトを読み込み、出力とともに戻ります。スニペットの最後でCTRL-Zを押すと、出力が返されます。

詳細については、ここを確認してください: http://php.net/manual/en/features.commandline.interactive.php (特に 最初のコメント )。

10
WesleyE

「php-a」を起動し、「Interactive Shell」ではなく「Interactive mode enabled」と表示された場合、phpのコピーはreadlineサポートなしでコンパイルされた可能性があります。インタラクティブなシェルではありません。

私が知る限り、PHPのWindowsコピーはすべてreadlineサポートなしでコンパイルされます。これにより、Windowsでは "-a"オプションは無意味になります(少なくとも私にとっては) 。

「php-a」は次のように機能するはずです(この場合、phpのLinuxコピーからの出力):

$ php -a
Interactive Shell

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

PHPのWindowsコピーの「php-a」はインタラクティブシェルではないため、「-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」を使用して「Interactivemodeenabled」というテキストを取得し、cli.Prompt(通常は「php>」)の出力が得られない場合は、phpのバージョンを確認する必要があります(「php-v」を使用) )少なくとも5.1であることを確認し、phpモジュール(「php-m」を使用)で「readline」モジュールがリストされていることを確認します。

7
chriv

インタラクティブなphpシェルをエミュレートするためのcmdスクリプトを作成します。各コマンドを環境変数に読み込み、PHPの新しいインスタンスを開始して、各コマンドを実行します。

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

PHP 7.1.0現在、両方 interactive Shell および readline はWindowsでサポートされています。

1
cmb

Windowsで使用します。 Windows環境に直接phpへのPATH変数があることを確認してください。再起動が必要な場合があります。 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を返します)数学は本当に得意でしたha :-)

0
user3242800

他の回答からわかるように、Windows PHPはエコーコマンドを(簡単に)サポートしていません)。Windows10ではこれを回避する方法がありますが、Windows 10Ubuntuサブシェルを有効にすることができます。システム。

Windows-Subsystem forLinuxをインストールするには

次のいずれかを実行します。

  • [コントロールパネル]-> [アプリ]-> [オプション機能の管理]。次に、Windows-subsystem for linuxがチェックされていることを確認します。

  • 昇格されたPowershellウィンドウでEnable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linuxを実行してインストールすることもできます。

今すぐ再起動します(多分最初にこのページをブックマークしてください)

再起動したら、インストール このアプリ を開いてください。ロードが完了し、ユーザーを作成したら、Sudo apt update && apt upgrade && apt install PHPと入力します。

Phpインタラクティブが必要な場合は、コマンドプロンプトを開き、bashと入力してからphp -aと入力します。

0
kres0345

Interactive Modeを使用する場合、文字通りスクリプト全体を入力する必要があります。

<?php
echo "HELLO WORLD";

次に、スクリプトを「実行」するには、空の行でCTRL+Zを実行し、ENTERを押す必要があります。

0
kapitanluffy