この章では、Windows 上でマイクロソフトのツールを用いて PHP をソースから コンパイルする方法を説明します。PHP を cygwin でコンパイルする場合は Unix システムへのインストール を参照ください。
このステップバイステップの簡易ガイドは 2008 年 3 月に書かれたものです。 Windows XP サービスパック 2 に最新のアップデートを適用した環境で PHP 5.2.5 と PHP 5.3 をビルドします。 別のツールを使うこともあるかもしれません。
以下をダウンロードしてインストールする
+-C:\work | +-bindlib_w32 | | +-Debug | | | +-resolv.lib | | | +-... | | +-... | +-win32build | | +-bin | | +-include | | +-lib | +-php-5.2.5 | | +-build | | +-win32 | | +-...
C:\Program Files\Microsoft Visual Studio 9.0\VC> set "PATH=C:\work\win32build\bin;%PATH%" C:\Program Files\Microsoft Visual Studio 9.0\VC>
PHP のコンパイルとビルドにはマイクロソフトの開発環境が必要です。 以下の環境をサポートしています。
公式の Windows 版は VC6 (Microsoft Visual C++ 6.0) で作成していますが、これは現在 Microsoft のウェブサイトからはダウンロードできません。 フリーで Windows 版の PHP をビルドしたい方は、Microsoft Visual C++ 2005 Express Edition と補助コンポーネントを使用してください。
注意: これらのコンポーネントは非常に大きなものであり、 すべてあわせると 1 ギガバイト以上のディスク容量が必要となります。
Microsoft Visual C++ 2005 Express の設定は少し複雑で、 3 つの別々のパッケージをインストールする必要があり、 互換性にかかわる変更もあります。 これらの 3 つのプログラムがインストールされた場所を覚えておくようにしましょう。 以下のプログラムをダウンロードしてインストールします。
インストールしたら、その後にいくつかの作業があります。
最後に、MSVC 2005 Express をコマンドラインから使用する場合は、 いくつか環境変数を設定する必要があります。 vsvars32.bat というファイルが、通常は C:\Program Files\Microsoft Visual Studio 8\Common7\Tools にあります (見つからなければ検索してください)。 このファイルには、PATH や INCLUDE そして LIB などの環境変数の宣言が書かれており、 それぞれ SDK のインストールディレクトリ配下の bin、include そして lib ディレクトリを含めるようになっています。
注意: .NET SDK のパスは既に vsvars32.bat に含まれているでしょう。 というのも、この SDK は自身のインストール先を Microsoft Visual C++ 2005 Express と同じディレクトリにするからです。
ダウンロードしたファイルを展開するには、ZIP 展開ユーティリティが 必要です。Windows XP 以降のバージョンでは、ZIP 展開機能が すでに組み込まれています。
始める前に、ダウンロードしなければならないものがいくつかあります。
最後に、PHP 自体のソースが必要となります。最新の開発版を » anonymous CVS から、または » スナップショット、あるいは 最新のリリース版の » ソース tar ボールをダウンロードします。
必要なパッケージをすべてダウンロードしたら、 ファイルを適切な位置に展開しなければなりません。
+--C:\work | | | +--bindlib_w32 | | | | | +--arpa | | | | | +--conf | | | | | +--... | | | +--php-5.x.x | | | | | +--build | | | | | +--... | | | | | +--win32 | | | | | +--... | | | +--win32build | | | | | +--bin | | | | | +--include | | | | | +--lib
» Cygwin を使用していない場合は、 C:\usr\local\lib ディレクトリを作成した上で C:\work\win32build\bin にある bison.simple を C:\usr\local\lib にコピーする必要があります。
注意: PEAR およびそのコマンドラインインストーラを使用したい場合は、 CLI-SAPI が必須となります。PEAR およびそのインストーラについての 詳細な情報は、» PEAR web サイトのドキュメントを参照ください。
resolv.lib ライブラリをビルドしなければなりません。 デバッグシンボルを有効にするか (bindlib - Win32 Debug) 否か (bindlib - Win32 Release) を決定してください。このとき、 どちらを選択したかを覚えておいてください。というのは、デバッグモードを 有効にした場合は、PHP もデバッグモードでビルドしないとリンクできなくなる からです。 適切な設定を用いてビルドします。
この章では、新しいビルドシステムを使用して PHP >=5 をコンパイルする 方法を説明します。これは CLI ベースのものであり、Unix での PHP のビルドシステムに非常に似ています。
注意: PHP 4 ではこの方式を使用することはできません。代わりに ソースからのビルド を参照ください。
はじめる前に、ソースからのビルド をよく読んだ上で » Libxml や » ICU (これは PHP >= 6 で必要です) のような必要なライブラリをすべてビルドしておいてください。
まず最初に、スタートメニューから Visual Studio コマンドプロンプトを 開きます。通常のコマンドプロンプトではうまく動作しません。 おそらく、必要な環境変数が設定されていないからでしょう。 次に、たとえば cd C:\work\php-5.x.x などのように 入力して PHP のソースディレクトリに移動します。 いよいよ PHP の設定が始まります。
次に、バッチファイル buildconf を実行します。 これは、config.w32 ファイルの内容をもとにして 設定スクリプトを作成します。デフォルトでは、このコマンドは 以下のディレクトリから config.w32 を探します。 pecl; ..\pecl; pecl\rpc; ..\pecl\rpc。 PHP 5.1.0 以降では、引数 --add-modules-dir を指定することで、この振る舞いを変更可能です (例えば cscript /nologo win32/build/buildconf.js --add-modules-dir=../php-gtk2 --add-modules-dir=../pecl)。
次のステップは、出来上がった設定スクリプトの実行です。 使用可能な設定オプションの一覧を見るには、 cscript /nologo configure.js --help と入力します。それらのオプションを有効/無効にすることを決めたら、 たとえば cscript /nologo configure.js --disable-foo --enable-fun-ext のように指定します。 --enable-foo=shared のようにすると、'foo' を共有モジュールとしてビルドし、動的に読み込まれるようにします。
最後に、コンパイルです。これは、ただ単に nmake というコマンドを実行するだけです。できあがったファイル (たとえば .exe や .dll) は、Release_TS あるいは Debug_TS ディレクトリに 配置されます (スレッドセーフ環境でビルドされた場合)。 それ以外の場合は Release あるいは Debug ディレクトリに配置されます。
オプションとして、PHP のテストスイートを実行することもできます。 この場合は nmake test と入力します。 特定のテストだけを実行させたいのなら、変数 'TESTS' を指定します (例 nmake /D TESTS=ext/sqlite/tests test - これは sqlite のテストのみを行います)。 コンパイル時に作成されたファイルを削除するには、 nmake clean コマンドを使用します。
スナップショットをビルドする際に非常に有用な設定オプションが、 --enable-snapshot-build です。 これは、新たなコンパイルモード (nmake build-snap) を作成します。このモードは、使用可能なすべての拡張モジュールを (デフォルトでは共有モジュールとして) ビルドしようとしますが、 個々の拡張モジュールや SAPI の構築の際のエラーは無視されます。
DSW ファイルを使用して PHP をコンパイルする方法は、PHP 5 では サポートされていません。 より柔軟なシステムを 使用することができます。 今でもここで説明されている方法を使用することは可能です。しかし 今後はメンテナンスの頻度が下がるため、コンパイル時に問題が 発生する可能性があることを覚えておきましょう。 Windows で PHP 4 をコンパイルする場合は、ここで説明されている方法が 唯一のものです。
最初のステップは、MVC++ でコンパイルするための準備です。 Microsoft Visual C++ を起動し、メニューから ツール => オプション を選択します。 ダイアログで、ディレクトリタブを選択します。 実行ファイル、インクルードファイル、ライブラリファイル の設定を順に変更し、以下のようにします。
まず始めは、標準的な CGI バージョンをビルドしてみると良いでしょう。
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 が作成されます。
Microsoft IIS 上で PHP アプリを実行するための SAPI モジュール (php4isapi.dll) をビルドするには、 アクティブな設定を php4isapi-whatever-config にし、お望みの dll をビルドしてください。