Debian Wheezyに使用可能なインタラクティブプロンプトでPHP CLIをインストールするにはどうすればよいですか?


10

Debian Wheezy(現在テスト中)にphp5-cliをインストールすると、readlineサポートがないため、インタラクティブプロンプトが非常に使用できなくなります(バグ341868)。libreadlineにリンクされたバージョンをインストールする最も簡単な方法は何ですか(使用可能なライン編集用)?

回答:


10

Dotdeb Debian安定パッケージを使用してください。ドキュメントにはこれは記載されていませんが、安定版パッケージは現在Wheezy / testingで正常に動作します。指示に従った後、以下を実行します。

apt-get install php5-cli

ルートとして。


1
nupはまだphp>プロンプトを表示しません:(
mulllhausen 2013年

6

dotdebからphp5-cliをインストールした後、php5-readlineパッケージをインストールします。

apt-get install php5-readline

これはジェシーでのみ利用可能です(テスト) - packages.debian.org/...
ウィリアム・タレル

@williamtありがとう、dotdebリポジトリにあると思います。
cmc

パッケージphp5-readlineはjessieとsidのメインアーカイブで入手できます。そして、あなたはphp5-clifrom dotdebを必要としません。
Ortomala Lokni

4

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にはさらに多くの情報が必要です。


ありがとう、それは助けになりました。しかし、Ubuntuで2つの問題が発生しました。libeditライブラリ(libedit-devをインストールすることで修正)が見つからず、このコンパイルのバグが発生しました:bugs.php.net/bug.php?id=62612解決策もあります。
Dziamid 2012

おかしなことに私は自分自身と矛盾しています!ここで私はphpizeなどをバグで提案します。そうすることは「完全に」サポートされていないと私は言います;-)
johannes

3

をインストール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)ではなく入力が出力されます。ライセンスの問題であることにご注意いただきありがとうございます。
Matthew Flaschen

3
@マシュー:私はPHPについて何も知りませんが、lennyでこれを試してみると、以前の許可されたコマンドラインエディション以外はとの間に違いはrlwrap php5ありませんphp5。と入力する<?php echo 1;?>と、出力はになりますが1、どちらの場合もすぐには出力されません。Googlingは、これはphp5単にPHP REPLではないことを示唆しており、代わりにphpshのようなものを使用する必要があります。
Gilles「SO-邪悪なことをやめなさい」

1
<?php または?>インタラクティブシェルで入力しないでください。phpには完全なREPLがないことに同意します。しかし、readlineサポートが動作するようにコンパイルされたバージョン(たとえば、私がリンクしたdotdebパッケージ)を使用すると、Enterキーを押すとすぐに1(または実際の出力は何でも)が出力されます。私はrlwrapとreadlineの間に大きな違いがないことに同意します(行編集と履歴以外は素晴らしいですが、即時出力ほど有用ではありません)。
Matthew Flaschen

@マシュー:ああ、readlineのサポートはreadlineとリンクするだけではなく、プログラムの動作も変更しますか?奇妙に思えます。次に、ソースから再ビルドするか、問題が解決しない場合はdotdebパッケージを使用します。
Gilles「SO-邪悪なことをやめなさい」

そうです、PHPの多くのことは奇妙に見えます。;)しかし、readlineのコードパスがこの領域で異なるのは、readlineに接線的に関連しているだけのようです。
マシューFlaschen

3

これを試して:

$ php -a
Interactive mode enabled

<?php echo "hi!"; ?>

Ctrl-dを押す


5
これはPHPのインストールとは関係がないようです
Michael Mrozek

1
これは質問に直接答えることはありませんが、実際には非常に役立ちます。 readlineパスでは、PHPは<?php ?>ブロック内のPHPコードのみを実行することを示しています。私はそれを知らなかったし、それは私が以前にジルを誤解したことを示している。
Matthew Flaschen

3

Ubuntuユーザーの場合、php5-readlineは、phpコマンドプロンプトを使用するためにインストールする必要がある追加のパッケージです。

sudo apt-get install php5-cli php5-readline
sudo php5enmod readline

私は自分のUbuntu 14.04でこれを行わなければなりませんでした。



1

debian jessieおよびdebian sidでは、次のように使用します。

sudo apt-get install php5 php5-readline

その後

php -a
Interactive mode enabled

php > echo 1+2;
3
php >
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.