普段はWebからの利用が多いPHPですが、CLI版のPHPを使うとシェルスクリプトの代替としても簡単に使用することができます。豊富な関数が用意されているので、バッチ処理や文字列処理を行う場合にもぴったりです。
Webサーバーとの通信を想定して作られたCGI版のPHPとは異なり、このCLI版PHPには便利な機能がいっぱいです。
今回は、このCLI版PHPを通じて、主なコマンドラインオプションを再発見しましょう。
ちなみにCLI版の詳細については、PHPをコマンドラインから使用するを参考にしてください。
○ -v オプション(--version)
PHPのバージョンが表示されます。以下のような感じの結果が表示され、cli版かどうかも確認できます。
$ php -v PHP 5.2.0 (cli) (built: Feb 7 2007 04:54:19) Copyright (c) 1997-2006 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies
○ -a オプション(--interactive)
実は、この-aオプションは、PHPのconfigure時に--with-readlineを付与したかどうかで、大きくその使い方が異なってきます。
--with-readlineを有効にせずにPHPをコンパイルした場合、以下のような画面になります。
$ php -a Interactive mode enabled
キーボード入力を受け付けるようになりますが、ここでスクリプトを入力します。たとえば、以下のように入力してみましょう。
<?php
$a = "Hello!";
for ($i = 0; $i < 10; $i++) {
echo ($a."\n");
}
?>
入力後にCtrl-Dを押すと、スクリプトが実行され、結果が表示されると思います。
--with-readlineオプションを有効にしてPHPをコンパイルすると、さらに機能が強化されたInteractive Shell(名前も変わります)を実行できます。この場合は、対話型の専用インターフェースを通じて、PHPのスクリプトを記述していくことができます。
先ほどと同様の処理を、Interactive Shellにて行ってみます。
[admin@localhost ~]$ php -a Interactive shell php > $a = "Hello!"; php > for ($i = 0; $i < 10; $i++) { php { echo ($a."\n"); php { } Hello! Hello! Hello! Hello! Hello! Hello! Hello! Hello! Hello! Hello!
このとおり、デバッガーによくあるImmediate Windowのような形で、PHPのスクリプトを記述できます。また、このプロンプトでは、TABキーを押すことで、関数名やファイル名の補完なども行ってくれます。簡単なシェルスクリプトを作りたい場合は非常に便利です。
独自でコンパイルしていると、なかなか--with-readlineオプションは付与していない場合が多いと思います。このInteractive Shellを利用できるようにするためにも、今後はこのオプションを活用するようにしましょう。
○ -iオプション(--info)
と記述するのが面倒な場合でも、このオプションを使うと簡単にPHPの情報を引き出すことができます。
configure時のオプションやphp.iniへのパス、モジュール情報を調べるときに、便利に活用できると思います。ちなみに、ロードされるモジュール一覧を列挙するには、-m(--modules)オプションも使用できます。
ただし、ここに表示される内容は、あくまでCLI版PHPでの設定情報です。環境によってはWebサーバーのモジュール版とは異なる設定になっているかもしれませんので、注意してください。
○ -cオプション(--php-ini)
php.iniファイルを別途指定できます。これを使うと、シェルスクリプトだけは別のグローバル設定を使用する、という事が実現できます。
これら以外にも、PHPではさまざまなコマンドラインオプションが用意されています。