ソースからのビルド

この章では、Windows 上でマイクロソフトのツールを用いて PHP をソースから コンパイルする方法を説明します。PHP を cygwin でコンパイルする場合は 第4章 を参照ください。

要件

PHP のコンパイルとビルドにはマイクロソフトの開発環境が必要です。 Microsoft Visual C++ 6.0 が推奨ですが、Visual C++ .NET でも 動作します。PHP 5 以降では、マイクロソフトがフリーで公開している .NET ツール群を使用することもサポートされています (これには、Windows Platform SDK、Visual C++ Toolkit および .NET Framework SDK をインストールすることが必要です)。

ダウンロードしたファイルを展開するには、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.simpleC:\usr\local\lib にコピーする必要があります。

注意: PEAR およびそのコマンドラインインストーラを使用したい場合は、 CLI-SAPI が必須となります。PEAR およびそのインストーラについての 詳細な情報は、PEAR web サイトのドキュメントを参照ください。

resolv.lib のビルド

resolv.lib ライブラリをビルドしなければなりません。 デバッグシンボルを有効にするか (bindlib - Win32 Debug) 否か (bindlib - Win32 Release) を決定してください。このとき、 どちらを選択したかを覚えておいてください。というのは、デバッグモードを 有効にした場合は、PHP もデバッグモードでビルドしないとリンクできなくなる からです。 適切な設定を用いてビルドします。

この時点で、使用可能な resolv.libC:\work\bindlib_w32\Debug または Release サブディレクトリのどちらかに存在します。 このファイルを C:\work\win32build\lib ディレクトリの同名のファイルに上書きコピーしてください。

新しいビルドシステムを使用して PHP をビルドする [PHP >=5 のみ]

この章では、新しいビルドシステムを使用して PHP >=5 をコンパイルする 方法を説明します。これは CLI ベースのものであり、Unix での PHP のビルドシステムに非常に似ています。

注意: PHP 4 ではこの方式を使用することはできません。代わりに DSW ファイルを使用して PHP をビルドする [PHP 4] を参照ください。

はじめる前に、ファイルの配置 をよく読んだ上で LibxmlICU (これは 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 4]

DSW ファイルを使用して PHP をコンパイルする方法は、PHP 5 では サポートされていません。 より柔軟なシステムを 使用することができます。 今でもここで説明されている方法を使用することは可能です。しかし 今後はメンテナンスの頻度が下がるため、コンパイル時に問題が 発生する可能性があることを覚えておきましょう。 Windows で PHP 4 をコンパイルする場合は、ここで説明されている方法が 唯一のものです。

MVC ++ の設定

最初のステップは、MVC++ でコンパイルするための準備です。 Microsoft Visual C++ を起動し、メニューから ツール => オプション を選択します。 ダイアログで、ディレクトリタブを選択します。 実行ファイル、インクルードファイル、ライブラリファイル の設定を順に変更し、以下のようにします。

  • 実行ファイル: C:\work\win32build\bin, Cygwin ユーザの場合: C:\cygwin\bin

  • インクルードファイル: C:\work\win32build\include

  • ライブラリファイル: C:\work\win32build\lib

コンパイル

まず始めは、標準的な 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 が作成されます。

Microsoft IIS 上で PHP アプリを実行するための SAPI モジュール (php4isapi.dll) をビルドするには、 アクティブな設定を php4isapi-whatever-config にし、お望みの dll をビルドしてください。