PHPコマンドライン版は、デバッグ時やPHPの設定をテストしたいような場 合には便利であるばかりでなく、Webスクリプト作成以外の用途にPHPを使 用したい場合には、便利な選択肢です。
PHP実行ファイルの出力を外部ファイルに>文字で常にリダイレクトでき、 このため、php -q test.php > test.htmlは、 test.phpの出力をHTTPヘッダを付加せずに同じディ レクトリのtest.htmlファイルに出力します。
コマンドライン版は、PHP実行ファイルがある場合にのみ使用可能です。サー バモジュール版を構築し、CGI版が使用するマシンで利用可能でない場合、 使用することはできません。Windowsユーザの場合、PHP実行ファイルとサー バモジュールが共にバイナリパッケージに入っています。実行ファイルの 名前は、php.exeです。
以下にPHP 4.0.6に関するコマンドラインオプションを示します。 -h オプションを使用することにより、実際のリスト とその簡単な説明を得ることが可能です。php -h の 出力は、以下のようになります。
Usage: php [-q] [-h] [-s [-v] [-i] [-f <file>] | {<file> [args...]} -q Quiet-mode. Suppress HTTP Header output. -s Display colour syntax highlighted source. -f <file> Parse <file>. Implies `-q' -v Version number -C Do not chdir to the script's directory -c <path> Look for php.ini file in this directory -d foo[=bar] Define INI entry foo with value 'bar' -e Generate extended information for debugger/profiler -z <file> Load Zend extension <file>. -l Syntax check only (lint) -m Show compiled in modules -i PHP information -h This help |
以下に最も重要なコマンドラインオプションのいくつかについて詳細な解 説を行います。
表 B-1コマンドラインオプション
オプション | 説明 |
---|---|
-q | HTTPヘッダ出力を抑制します。通常、PHPはコールするプログラム(す なわちWebサーバ)がブラウザに出力するようにHTTPヘッダを出力しま す。コマンドラインアプリケーションを作成する場合には、これらの ヘッダは意味がありません。 |
-s | ファイル名で指定されたファイルをカラーハイライト表示にして出力 します。これは、PHPスクリプトでソースコードを highlight_file()により出力するのと同じです。 |
-v | このオプションを付けてPHPをコールすると、バージョン番号、すな わち、4.0.6を知ることができます。 |
-C | 通常、PHPは作業ディレクトリをスクリプトがあるディレクトリに変 更します。これにより、例えばファイル名を指定するだけで同じディ レクトリにあるファイルをオープンすることが可能となります。 このディレクトリ変更を無効にしたい場合はこのオプションを使用し て下さい。 |
-c | このオプションを使用すると、別のphp.ini のパスを指定することが可能です。この場合、PHPは、デフォルトの パスの代わりに指定したパスで設定ファイルを探します。 |
-d | このオプションを付けることにより、スクリプト実行時に、個々の php.ini設定を設定することが可能です。 |
-m | このオプションにより、組み込まれた(そしてロードされた)PHPモジュー ルおよびZendモジュール、PHPおよびZendのバージョン番号、Zendの 著作権の簡略版を出力します。 |
-i | このコマンドラインオプションは、phpinfo()を コールし、結果を出力します。PHPが正しく動作しない場合、 php -iを実行し、情報テーブルの前または中に 出力されているエラーメッセージを確認して下さい。 |
-h | このオプションを付けると、実際のコマンドラインオプション及びそ の簡単な説明を得ることができます。 |
PHPの実行形式を使えばPHPをスクリプトをウェブサーバから完全に 独立させて実行することが出来ます。Unixシステム上では、PHP スクリプトの先頭に特別な1行を追加することで、そのスクリプトを 実行するのに必要なプログラムをシステムに知らせることができるので そのスクリプト自体を実行可能形式とすることが出来ます。Windows システム上では、php.exe -qを.php ファイルに関連付けるか、PHPを使ってスクリプトを実行する バッチファイルを書くことが出来ます。Unixでの実行のために付加された 最初の1行はWindows上での実行時にも問題となることはありませんので クロスプラットフォームなスクリプトを書くことが出来ます。コマンド ライン用PHPプログラムの単純な例は以下のようなものです。
上記のスクリプトではファイルがPHPによって実行され、またHTTPヘッダを 出力しないことを示す特別な1行目を使用しています。PHPのコマンドライン版 アプリケーションを書くとき、以下の2つの変数を使用することが出来ます: $argcと$argvです。1番目の変数は 引数の数に1を足した数(実行中のスクリプト名)です。2番目の変数は引数を 格納した配列です。配列はスクリプト名を格納した0($argv[0] )から始まります。
上記のプログラムは、引数の数が1未満か1より多いかどうかをチェック しています。また、もし引数が--help, -help , -hもしくは--help だったら動的にスクリプト名を表示し、ヘルプを出力します。もし他の 引数を受け取ったらそれを表示します。
もし上記のスクリプトをUnixで実行するなら、ファイルに実行権限を与え、 単純に script.php echothisもしくはscript.php -h というように実行します。Windowsでは、バッチファイルを書く ことで同様のことが行えます:
上記のプログラムをscript.phpという名前にしたとして、 またphp.exeがc:\php\php.exeに あるとするとこのバッチファイルはscript.bat echothis もしくはscript.bat -hといったオプションを追加して 実行することが出来ます。