Debian Squeezeを実行していて、PHPインタラクティブモードに移行しようとしています。(私は通常のphpインストールパッケージと一緒にphp5-cliをインストールしました)通常、私はphp -a
このシステムで実行することによってこれを行います私は通常のphpプロンプトなしで以下を取得します:
インタラクティブモードが有効
どんな助けでも大歓迎です。
残念ながら、これはDebian固有のバグです:#576218。
バグレポートからのコメントを要約すると、これに対する簡単な回避策はないようです。ただし、Ubuntuおよびおそらく他のディストリビューションはPHPをに対してビルドするため、このバグの影響を受けませんlibreadline
。Debianはを使用しませんが、ライセンスの問題libreadline
が原因です。libedit
もう1つの答えは、解決策を見逃しています。
永続的な環境なしでいくつかの短いコマンドが必要な場合は、
while read -er line; do php -r "$line"; done
libeditの代わりにreadlineにリンクする別のphp(コンパイルまたは他の手段を介して)(phpパッケージに関係する誰かがreadlineのgplをphpに適用することを望まないため、これはdebianでは行われませんでした)、または新しいバージョンのphpを入手してくださいこのバグは修正されています。
readlineモジュールは自分でコンパイルできます。DebianWheezyとPHP5.4では、これを実行することでこれを修正できました(rootとしてコマンドを実行します)。
# apt-get install php5-dev libedit-dev libreadline-dev
# mkdir php && cd php
# apt-get source php5-cli
# cd php5-5.4.4/ext/readline
# phpize
# ln -s ../../sapi/
# ./configure
# make
# cp modules/readline.so /usr/lib/php5/<number like 20100525>/
# chmod -x /usr/lib/php5/20100525/readline.so
# echo 'extension=readline.so' > /etc/php5/mods-available/readline.ini
# cd /etc/php5/cli/conf.d
# ln -s ../mods-available/readline.ini 20-readline.ini
これで、PHPコンソールは正常に動作するはずです。
私はUbuntu12.04Precise Pangolin(Debian Wheezyに基づく)でこれを解決しました。
sudo apt-get install php5-readline