7

php -aターミナルでコマンドを使用して PHP の対話型シェルを使用していますが、コマンドが機能していません。シンプルな を試してみても2 * 2、結果が得られません。

私は何を間違っていますか、それはどのように機能しますか?

4

5 に答える 5

16

インタラクティブシェルのドキュメントでは、 Ryan P. による最初のメモにいくつかの重要な情報があります。

インタラクティブ シェルとインタラクティブ モードは、名前と機能が似ていますが、同じものではありません。

php -a「Interactive Shell」と入力して応答があり、その後にプロンプ​​トが表示されたphp>場合は、対話型シェルを使用できます (PHP は readline サポート付きでコンパイルされています)。代わりに「インタラクティブ モードが有効になっています」という応答が返された場合は、インタラクティブ シェルを使用できないため、この記事は適用されません。

したがって、「インタラクティブモードが有効」になっている場合は、PHPコードを入力することしかできず、完了したらPHPにEOFを送信して実行できます。

これはおそらくあなたが望むものではありません。代わりにphpshを調べることをお勧めします。

于 2013-02-09T23:37:40.297 に答える
3

でコンパイルされた PHP 5.1.0 はあり--with-readlineますか?

PHP 5.1.0 以降、PHP が --with-readline オプションでコンパイルされている場合、CLI SAPI は -a オプションを使用して対話型シェルを提供します。

PHPマニュアルページの例:

$ php -a

インタラクティブシェル

php > エコー 5 + 8;

13

詳細: http://www.php.net/manual/en/features.commandline.interactive.php

于 2013-02-09T23:40:13.530 に答える
1

print() または echo() を使用していますか? 2*2 の例は実行されますが、PHP に print() のような出力で何かを行うように指示するまで、その証拠は表示されません。

php -a
php > 2 * 2;            #This doesn't return anything.
php > print (2 * 2);
4
于 2013-02-09T23:38:14.663 に答える