PHP ファイルの実行CLI SAPI は、実行する PHP コードを 取得するために三種類の異なる手段をサポートしています。
他のシェルアプリケーションのように、PHP バイナリに
引数を指定することができるだけでなく、PHP スクリプトが
この引数を取得することも可能です。スクリプトに指定できる
引数の数は PHP による制限を受けません
(シェルは指定可能な文字数の最大値を設定しています。通常、この制限値を
越えることはできません)。スクリプトに指定した引数は、グローバル配列
$argv でアクセス可能です。
最初のインデックス (添字 0) には常に、
コマンドラインからコールしたスクリプト名が含まれています。
コマンドラインスイッチ
-r を使ってインラインでコードを実行した場合は、
$argv[0] の値は 登録される第 2 のグローバル変数は $argc で (スクリプトに指定された引数の数ではなく )、配列 $argv の要素数が含まれます。
スクリプトに指定する引数が文字 # これは、指定したコードを実行せずに PHP の使用法を示します $ php -r 'var_dump($argv);' -h Usage: php [options] [-f] <file> [args...] [...] # これは '-h' を引数として解釈し、PHP の使用法を表示しません $ php -r 'var_dump($argv);' -- -h array(2) { [0]=> string(1) "-" [1]=> string(2) "-h" }
Unix システムでは、PHP をシェルスクリプトとして使用する他の手段があります。
最初の行が 例1 シェルスクリプトとしての PHP スクリプトの実行
このファイルの名前が test で、カレントディレクトリに あるとすると、以下のように実行することができます。 $ chmod +x test $ ./test -h -- foo array(4) { [0]=> string(6) "./test" [1]=> string(2) "-h" [2]=> string(2) "--" [3]=> string(3) "foo" }
見て分かるように、
PHP 実行バイナリは、Web サーバーから完全に独立して PHP スクリプトを
実行するために使用することができます。Unix システムを使用している場合、
実行可能とするためには PHP スクリプトの先頭に特別な一行を追加する必要が
あります。これにより、システムがそのスクリプトを実行するプログラムを
知ることができます。
Windows 環境では、
例2 コマンドラインから実行されることを意図したスクリプト(script.php)
上のスクリプトでは、特殊な先頭行が用いられており、このファイルが PHP により実行されることを示しています。ここでは CLI 版を使用しているため、 HTTP ヘッダは出力されません。PHP で コマンドラインアプリケーションを使用する際には、2 つの変数 $argc および $argv を使用することが できます。 最初の変数は、引数の数に 1 (実行中のスクリプトの名前)を加えたものです。 2 番目の変数は、引数を保持する配列で、スクリプト名を有する 要素 0 ($argv[0]) から始まっています。 上のプログラムでは、引数が 1 より少ないかまたは多いかを調べています。 また、引数が --help, -help, -h または -? の場合、 ヘルプメッセージを出力し、動的にスクリプト名を出力します。 他の引数を受け取った場合、これを出力します。 上のスクリプトを Unix で実行する場合、実行可能とした後、 script.php echothis または script.php -h とする必要があります。 Windows では、この処理を行なう以下のようなバッチファイルを作成することができます。
例3 コマンドライン PHP スクリプトを実行するバッチファイル(script.bat) @echo OFF "C:\php\php.exe" script.php %* 上のプログラムが script.php という名前であるとし、 c:\php\php.exe に CLI php.exe があるとすると、このバッチファイルは、追加オプション script.bat echothis または script.bat -h を指定して、スクリプトを実行します。 PHP のコマンドラインアプリケーションを拡張するために使用できるその他の関数については、 拡張モジュール Readline に関するドキュメントも参照ください。
Windows 環境で使用している場合、PHP の設定によって
C:\php\php.exe や拡張子
|