Debian Wheezy(現在テスト中)にphp5-cliをインストールすると、readlineサポートがないため、インタラクティブプロンプトが非常に使用できなくなります(バグ341868)。libreadlineにリンクされたバージョンをインストールする最も簡単な方法は何ですか(使用可能なライン編集用)?
Debian Wheezy(現在テスト中)にphp5-cliをインストールすると、readlineサポートがないため、インタラクティブプロンプトが非常に使用できなくなります(バグ341868)。libreadlineにリンクされたバージョンをインストールする最も簡単な方法は何ですか(使用可能なライン編集用)?
回答:
Dotdeb Debian安定パッケージを使用してください。ドキュメントにはこれは記載されていませんが、安定版パッケージは現在Wheezy / testingで正常に動作します。指示に従った後、以下を実行します。
apt-get install php5-cli
ルートとして。
dotdebからphp5-cliをインストールした後、php5-readlineパッケージをインストールします。
apt-get install php5-readline
php5-readline
はjessieとsidのメインアーカイブで入手できます。そして、あなたはphp5-cli
from dotdebを必要としません。
PHPパッケージ全体を再コンパイルすることを提案するGillesの回答への追加として、PHP 5.4を待つこともできます。5.4では、必要なすべてのパーツがreadlineモジュールに含まれるようにreadline機能を再構成したので、スタンドアロンで構築できます。
$ wget ...php-5.4.0.tar.bz2
$ tar xjf php-5.4.0.tar.bz2
$ cd php-5.4.0/ext/readline
$ phpize && ./configure && make
次にmodules/readline.so
、php.iniからロードできるが作成されます(make install
に移動しますextension_dir
)
あるいは、ディストリビューターがreadlineモジュールを出荷し(readlineではなくlibeditにリンクされている可能性があります)、対話モードが使用可能になります。
これは今のところ(PHP 5.4がまだリリースされていないので)役に立たないでしょうが、後で他の人がこの質問を見つけるのを助けるかもしれません。
私のブログの詳細:http : //schlueters.de/blog/archives/133-Now-in-trunk-Improved-interactive-shell.html
編集:実際のブログ投稿はこの変更よりも古いですが、それでも興味深いかもしれません。バグレポート#53878には少しの情報が含まれていますが、あまり多くもありません...リリース後、http://php.net/commandline.interactiveにはさらに多くの情報が必要です。
をインストールrlwrap
して実行しrlwrap php5
ます。Rlwrapは、一般的なreadlineラッパーで、read-eval-printループのコマンドライン版と履歴を提供します。これは一般的なラッパーなので、PHP固有の補完はありません。
または、ソースパッケージを取得し、readlineサポートを使用して再ビルドします。Readlineのサポートは、ライセンスの問題のために省略されましたが、これらの問題は、ReadlineにリンクされたPHP5の配布を禁止するだけであり、使用を禁止するものではありません。
apt-get source php5-cli
apt-get install build-essential fakeroot
apt-get build-dep php5-cli
cd php5-*/
# Edit debian/rules to configure with readline support
# Add an entry to debian/changelog to remember what you did
dpkg-buildpackage -rfakeroot -us -uc -b -nc
rlwrap
あまり役に立たないようです。を実行rlwrap php5
してEnter echo 1;
キーを押してから、Returnキーを押してからCtrl-D(入力の終わり)を押すecho 1;
と、結果(1)ではなく入力が出力されます。ライセンスの問題であることにご注意いただきありがとうございます。
rlwrap php5
ありませんphp5
。と入力する<?php echo 1;?>
と、出力はになりますが1
、どちらの場合もすぐには出力されません。Googlingは、これはphp5
単にPHP REPLではないことを示唆しており、代わりにphpshのようなものを使用する必要があります。
<?php
または?>
インタラクティブシェルで入力しないでください。phpには完全なREPLがないことに同意します。しかし、readlineサポートが動作するようにコンパイルされたバージョン(たとえば、私がリンクしたdotdebパッケージ)を使用すると、Enterキーを押すとすぐに1(または実際の出力は何でも)が出力されます。私はrlwrapとreadlineの間に大きな違いがないことに同意します(行編集と履歴以外は素晴らしいですが、即時出力ほど有用ではありません)。
これを試して:
$ php -a
Interactive mode enabled
<?php echo "hi!"; ?>
Ctrl-dを押す
<?php ?>
ブロック内のPHPコードのみを実行することを示しています。私はそれを知らなかったし、それは私が以前にジルを誤解したことを示している。
Ubuntuユーザーの場合、php5-readlineは、phpコマンドプロンプトを使用するためにインストールする必要がある追加のパッケージです。
sudo apt-get install php5-cli php5-readline
sudo php5enmod readline
私は自分のUbuntu 14.04でこれを行わなければなりませんでした。
これらのどれも私にとってはうまくいきませんでした。代わりにhttp://www.phpsh.org/を使用してください。
php>
プロンプトを表示しません:(