この節では、PHP を Windows のコマンドラインで実行するときの注意点やヒントを説明します。
注意:
まず最初に 手動でのインストールの手順 を読みましょう!
特に Windows に手を加えなくても、PHP をコマンドラインから実行することはできます。
C:\PHP5\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3
しかし、次の手順に従えば、さらにシンプルに実行することができます。 この中にはすでに実行済みのものがあるかもしれませんが、順を追って進めていくために もう一度ここで説明しておきます。
PHP の実行ファイル (php.exe、 php-win.exe あるいは php-cli.exe。 PHP のバージョンや設定によって変わります) がある場所を環境変数 PATH に追加します。 PHP のディレクトリを PATH に追加する方法は、FAQ の項目 を参照ください。
拡張子 .PHP を、環境変数 PATHEXT に追加します。これは、環境変数 PATH の変更と同時に行うこともできます。 FAQ に書かれている手順に従いましょう。ただし、環境変数 PATH の部分は PATHEXT に変更します。
注意:
.PHP をどの位置に書くかによって、 ファイル名がマッチしたときに実行されるスクリプトあるいはプログラムが決まります。 たとえば .PHP を .BAT より前に書くと、 同じ名前のバッチファイルがあってもスクリプトのほうを優先して実行します。
拡張子 .PHP をファイル形式と関連づけます。 これは、次のコマンドで行います。
assoc .php=phpfile
ファイル形式 phpfile を適切な PHP 実行ファイルと関連づけます。 これは、次のコマンドで行います。
ftype phpfile="C:\PHP5\php.exe" -f "%1" -- %~2
このようにしておくと、どのディレクトリにあるスクリプトを実行するときにも PHP 実行ファイルのパスや拡張子 .PHP をタイプしなくて済むようになります。 また、スクリプトに渡すパラメータを指定することもできます。
次の例は、レジストリの変更の一部を示したものです。これらは手動で行うこともできます。
例1 レジストリの変更
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php] @="phpfile" "Content Type"="application/php" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile] @="PHP Script" "EditFlags"=dword:00000000 "BrowserFlags"=dword:00000008 "AlwaysShowExt"="" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\DefaultIcon] @="C:\\PHP5\\php-win.exe,0" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell] @="Open" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open] @="&Open" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open\command] @="\"C:\\PHP5\\php.exe\" -f \"%1\" -- %~2"
これらの変更をすれば、同じコマンドを次のように書くことができます。
"C:\PHP Scripts\script" -arg1 -arg2 -arg3
script -arg1 -arg2 -arg3
注意:
これらのテクニックを使って PHP スクリプトをコマンドラインフィルタとして使おうとすると、 ちょっとした問題が発生します。「コマンドラインフィルタとして使う」とは、たとえば
あるいはdir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3のように使うということです。 このようにすると、スクリプトがハングして何も出力されなくなります。 これをうまく動作させるには、さらにレジストリを変更しなければなりません。dir | script -arg1 -arg2 -arg3この件に関する詳細な情報は » Microsoft Knowledgebase Article : 321788 を参照ください。Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer] "InheritConsoleHandles"=dword:00000001