17

PHPインタープリターで簡単なPHPコードを実行しようとしました。コマンドを実行するphp -aと、メッセージが表示されます

インタラクティブモードが有効

PHP入力の場所がありません。しかし、コマンドを使用して php コードを実行できますphp -r。例えば:

php -r "echo 'Hello stackoverflow!';"

こんにちはスタックオーバーフロー!

4

9 に答える 9

36

これをインストールします:

php5-readline

次に使用してみてください:

php -a
于 2014-03-11T03:24:48.393 に答える
7

入力php -mして、readlineモジュールがあることを確認してください。そうしないと使用できなくなります。

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

PHP 5.1.0以降、PHPが--with-readlineオプションでコンパイルされている場合、 CLISAPIは-aオプションを使用したインタラクティブシェルを提供し ます。

于 2012-04-23T15:15:49.870 に答える
4

PHP と libreadline の間にコンパイル/リンク エラーがあるようです。これはPHP Bug #48759に記載されています。

  • PHPを自分でコンパイルしましたか?make clean--configure をいじって、最終ビルドの前に適切に実行しませんでしたか?
  • php -mreadline を有効な機能としてリストしますか? (PHP はオプションでビルドされていますか--with-readline)
  • あなたのphpのバージョンは何ですか?
  • どのディストリビューションを使用していますか?
  • libreadline (*-dev パッケージ) がインストールされていますか?
于 2012-04-23T15:17:17.330 に答える
2

インタラクティブモードですが、リードラインモードを使用できない可能性があるため、プロンプトは表示されません。入力を開始するだけで、Enterキーを押した後にコマンドが評価されます。何も起こっていないように見えますが、入力すると、たとえば次のようになります。

<?php

echo "hello world";

?>

...出力が表示されます...

ブレースブロックを入力すると、終了後にEnterキーを押した後に評価されます}

<?php 
for ($i = 0; $i < 5; $i++) {
  echo $i;
}
// prints 12345 after closing }

で始める必要があることに注意してください<?php。そうしないと、入力されたものは評価されません。

更新(数年後):

ベンダーのセキュリティパッチが適用されたPHP5.3.3を実行しているRedHat(RHEL5)システムで、中括弧を閉じてもエコーバックしないインタラクティブモードが発生しました。

代わりに、を押すまで出力バッファはフラッシュされませんでしたCtrld。事実上、これによりインタラクティブセッションが1回限り使用されます。すべてのコード入力を挿入し、Ctrldすべての出力を一度に返します。

于 2012-04-23T15:14:54.417 に答える
2

各マシンでコンパイルするのに飽きた後、PHPSHを使用しました(joey-adamsが述べたように)

php -a (構文の強調表示とオートコンプリート) よりもはるかに優れています。

python phpsh をインストールする

install-php5-with-readline-support-on-debian-wheezy を見てください

$ sudo apt-get install python # this is necessary to run phpsh
$ cd ~/

$ wget https://github.com/facebook/phpsh/zipball/master
$ unzip phpsh-master.zip

$ cd phpsh-master
$ sudo cp -r src /etc/phpsh # phpsh seems to complain unless it resides at /etc/phpsh
$ sudo ln -s /etc/phpsh/phpsh /usr/bin/phpsh # put phpsh on the $PATH
于 2013-12-12T08:45:09.723 に答える
1

readline モジュールがインストールされているかどうかを確認するには、次のように入力します。php -m | grep readline

何も表示されない場合は、readline モジュールをインストールします。sudo apt-get install php5-readline

モジュールのインストール後、次のコマンドで対話モードに入るよりも、前のコマンドでその存在を再確認できます。php -a

于 2016-02-03T08:29:50.720 に答える
0

Mac を使用している場合は、Homebrew ( http://brew.sh ) をインストールしてから、brew install phpsh と入力します。

そして、phpsh を実行して対話型シェルを取得できます。

于 2016-04-18T11:08:18.583 に答える
-2

これはあなたが見るものです:

# php -a
Interactive shell

php > echo 1+1;
2
php > echo PHP_VERSION;
5.3.2-1ubuntu4.14
php > exit
#
于 2012-04-23T15:13:51.153 に答える