Interactive modeとInteractive shell
via. 75. PHPの便利なコマンドラインオプションを再発見 | 日経 xTECH(クロステック)
PHP5.1以降、CLI版phpの「-a」オプションで対話モード(Interactive mode)になるわけですが、
$ php -a Interactive mode enabled <?php var_dump(date('Ymd')); string(8) "20081205"
のように「<?php」を付けなきゃいけません。全然いけてないです><
で、75. PHPの便利なコマンドラインオプションを再発見 | 日経 xTECH(クロステック)でアシアルの田中さんがいろいろと書いてます。このうち、
--with-readlineオプションを有効にしてPHPをコンパイルすると、さらに機能が強化されたInteractive Shell(名前も変わります)を実行できます。
のとおりに、build時に--with-readlineオプションを付けると、対話シェル(Interactive Shell)になります。こちらは「<?php」を付ける必要がありません。
$ php -a Interactive shell php > var_dump(date('Ymd')); string(8) "20081205" php >
ちなみに、sharedでbuildするとどうなるかというと、対話モード(Interactive mode)のままです。たとえば、sapi/cli/php_cli.cの982行目(PHP5.2.7)を見てみると、
981 if (interactive) { 982 #if (HAVE_LIBREADLINE || HAVE_LIBEDIT) && !defined(COMPILE_DL_READLINE) 983 printf("Interactive shell\n\n"); 984 #else 985 printf("Interactive mode enabled\n\n"); 986 #endif 987 fflush(stdout); 988 }
となっていて、「readlineが動的モジュールとしてコンパイルしてない場合」という条件が付いてました。その他、実装部分も同様です。
ということで、オプションを付けていない場合、再buildする必要があります。