ビルド手順を説明する前に、次の質問に答えておきましょう。 「なぜ、Windows 上でのビルド作業はこんなに面倒なのか?」 考えられる理由としては、二つあります。
Windows では、まだ、ソースを自由に共有する大規模な開発者の コミュニティがそれほど多くありません。結果として、 そのような共同開発のサポートに必要なインフラを構築する作業が 行われていないからです。利用可能なユーティリティの大部分は、UNIX から 移植されたものです。そのような背景が影響しているとしても、驚くべきことではありません。
手順がほとんど「実行したら、忘れてしまう」形式で記述されているからです。 ですので、端末の前に座ったら、以下の手順をできるだけそのまま試して見てください。
コンパイルとビルドにはマイクロソフトの開発環境が必要です。 Microsoft Visual C++ 6.0 が推奨です。ダウンロードしたファイルの解凍には 解凍ユーティリティ (例えば WinZip) が必要です。zip を解凍するユーティリティが 手元に無いのなら InfoZip から無料の バージョンを取得できます。
始める前に、ダウンロードしなければならないものがいくつかあります。
http://www.php.net/extra/win32build.zip から win32 ビルドツール
http://www.php.net/extra/bindlib_w32.zip から PHP が使用する DNS ネームリゾルバのソース。 これは win32build.zip に含まれる resolv.lib の代用です。
PHP を Apache モジュールとしてコンパイルする場合には Apache のソースも 必要です。
最後に、PHP 自体のソースが必要となります。最新の開発版を anonymous CVS から、または スナップショット、あるいは 最新のリリース版の ソース アーカイブを ダウンロードします。
必要なパッケージをすべてダウンロードしたら、 ファイルを適切な位置に展開しなければなりません。
すべてのファイルを展開するための作業ディレクトリを作成します。 例えばc:\work
作業ディレクトリ (c:\work) 配下に win32build ディレクトリを作成し、そこで win32build.zip を解凍します。
作業ディレクトリ (c:\work) 配下に bindlib_w32 ディレクトリを作成し、そこで bindlib_w32.zip を解凍します。
作業ディレクトリ (c:\work) 配下に PHP のソースコードを解凍します。
+--c:\work | | | +--bindlib_w32 | | | | | +--arpa | | | | | +--conf | | | | | +--... | | | +--php-4.x.x | | | | | +--build | | | | | +--... | | | | | +--win32 | | | | | +--... | | | +--win32build | | | | | +--bin | | | | | +--include | | | | | +--lib |
注意: Cygwin ユーザーは最後の手順は省略しても かまいません。適切にインストールされているCygwin環境は bison.simple と bison.exe を持っています。
次のステップは MVC++ でコンパイルする準備です。 Microsoft Visual C++ を起動し、ディレクトリタブを選択します。 実行形式、include、ライブラリのファイルが順次変更されます。 以下のようになります。
Executable files: c:\work\win32build\bin, Cygwin users: cygwin\bin
Include files: c:\work\win32build\include
Library files: c:\work\win32build\lib
resolv.lib ライブラリをビルドしなければなりません。 デバッグシンボルを有効にするか (bindlib - Win32 Debug) 否か (bindlib - Win32 Release) を決定してください。 適切な設定をしたらビルドします。
GUI ユーザーの場合、VC++ を起動し、File => Open Workspace で c:\work\bindlib_w32 の bindlib.dsw を選択します。そしてBuild=>Set Active Configuration を選択し お望みの設定を施してください。最後に Build=>Rebuild All します。
コマンドラインユーザーの場合、C++ 環境変数が設定されているか、あるいは vcvars.bat を既に実行したか、確認してください。 そして、以下のコマンドを実行します。
msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"
msdev bindlib.dsp /MAKE "bindlib - Win32 Release"
まず始めは、標準的な CGI バージョンをビルドしてみると良いでしょう。
GUI ユーザの場合、VC++ を起動し、ファイル => ワークスペースを 開くを選び、c:\work\php-4.x.x\win32\php4ts.dsw を選択してください。続いて、構築=>アクティブな 構成を設定 を選び、php4ts - Win32 Debug_TS php4ts - Win32 Release_TS から好きなほうを 選択します。最後に、構築=>すべて構築 を選択します。
コマンドライン版ユーザの場合、C++ 用の環境変数が定義されている かどうか、もしくは、vcvars.bat を実行済みか どうか確認してから、c:\work\php-4.x.x\win32 ディレクトリから次の内のいずれかを実行してください。
msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"
msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"
ここまでの手順で、サブディレクトリ c:\work\php-4.x.x.\Debug_TS または Release_TS に利用可能な php.exe が作成されているはずです。
main/config.win32.h ファイルを編集すると ビルドプロセスでの細かい設定を行えます。 例えば、php.ini のデフォルトの位置を変えたり、ビルトインの拡張モジュールや 拡張モジュールのデフォルトの位置を変えることができます。
次に、PHP をコマンドラインから使用する ための CLI バージョンを構築しましょう。 php4ts_cli - Win32 Debug_TS または php4ts_cli - Win32 Release_TS を選択すること以外は CGI バージョンのビルド手順と同様です。コンパイルが成功すると Release_TS\cli\ または Debug_TS\cli\ ディレクトリのどちらかに php.exe が作成されます。
注意: PEAR とその便利なコマンドラインインストーラを使用するには、 CLI-SAPI が必要です。PEAR とそのインストーラに関する詳細については PEAR のサイトをご覧ください。
Microsoft IIS 上で PHP アプリを実行するための SAPI モジュール (php4isapi.dll) をビルドするには、 アクティブコンフィグレーションを php4isapi-whatever-config にセットし、お望みの DLL をビルドしてください。