woshidan's blog

あいとゆうきとITと、とっておきの話。

対話型phpを使う(インタラクティブシェルとインタラクティブモード)

久々にphpの記事を。

 

いや、さわってるのは、最近どころか明日明後日までずっとphpなんですがね。

rubyで対話シェルがあるのだから、phpにもあるだろう、

と思って調べたらあったので、メモ。

 

phpで対話シェル

PHP 5.1.0 以降では、--with-readline オプションつきで PHPコンパイルした場合に CLI SAPI で対話シェルが使えるようになりました。 対話シェルは、-a オプションで使うことができます。

PHP: 対話シェル - Manual

というわけで、実際にターミナルに打ち込んでみたら出来たので非常に感動しています。

 

だけど、実はこのmacの諸言語の設定は自分でやったわけではないので(だめプログラマだ)、自分でインストールしたインターン先のphpは-aオプションをつけても、

Interactive shell

php > echo "Hello World!\n";
Hello World!
php > 

という風にはなってくれません。

 

こういう風になります。

Interactive mode enabled
    
    //何も表示されない!

 

PHP対話型シェルをWindowsで使う - 農業をITから考える頁

 

ここと同じことだと思うのですが、

インターン先の環境はmacなので、自分の場合は--with-readlineのオプション(たぶんこちらだけど、検証のために再インストールしたくない)が入ってないせいかと思われます。

 

では、こちらはどうやって使うのか。

phpで対話モード

もったいぶりましたが、

Interactive mode enabled
    
<?php
   echo "Hello World\n";
?>
//win -> ctrl + z を押す。 mac -> ctrl + dを押す
//macでctrl + z を押すと終了する
Hello World

という風にファイルの中に書くときとおなじく<?php ... ?>で囲って書いてから、実行コマンドを押すだけです。

 

ちょっとだけめんどくさいので、それだけで実行ファイルをphp exe.phpみたいに実行するのとどちらが楽か迷ったけれど、一応対話的には使えるみたいです。

 

シェルが使えるかどうかの判別には

php -m

と入力して出てくるコマンド?の一覧にreadlineが入っていたらシェルモードが使えます。

 

phpを入れ直すか、apacheの設定を直すかしたら使えそうなのですが、

phpの入れ直しは先々週苦戦したばかりだし、

もう少しパスを通すとかその辺の話に慣れてからにします。