無料CGI、PHPサイト(確認画面付きメールフォーム・メーリングリスト・メルマガ設置、逆アクセスランキング、画像カウンター等)PHPマニュアル by k-sky

ソースからのビルド

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

Windows 上でビルドするための簡易ガイド

このステップバイステップの簡易ガイドは 2008 年 3 月に書かれたものです。 Windows XP サービスパック 2 に最新のアップデートを適用した環境で PHP 5.2.5 と PHP 5.3 をビルドします。 別のツールを使うこともあるかもしれません。

  1. 以下をダウンロードしてインストールする

  2. C:\Program Files\Microsoft SDKs\Windows\v6.1\Include\WinResrc.hC:\Program Files\Microsoft SDKs\Windows\v6.1\Include\winres.h にコピーする
  3. ディレクトリ C:\work を作成する
  4. » the Windows build tools をダウンロードし、それを C:\work に展開する
  5. ディレクトリ C:\usr\local\lib を作成し、 C:\work\win32build\bin\bison.simple をそのディレクトリにコピーする
  6. » the Windows DNS resolver library をダウンロードし、それを C:\work に展開する
  7. C:\work\bindlib_w32\bindlib.dsw 開く。 プロジェクトを更新するかどうかを聞かれたら「はい」を選択します。 Debug あるいは Release のいずれかの設定をトップツールバーで選択し、 Build => Build Solution を選択します。
  8. PHP のソースを取得して C:\work ディレクトリに展開する。この時点で、ディレクトリ階層は次のようになっています。
    +-C:\work
    | +-bindlib_w32
    | | +-Debug
    | | | +-resolv.lib
    | | | +-...
    | | +-...
    | +-win32build
    | | +-bin
    | | +-include
    | | +-lib
    | +-php-5.2.5
    | | +-build
    | | +-win32
    | | +-...
  9. スタートメニューから Visual Studio 2008 コマンドプロンプトを開く
  10. 次のコマンドを実行する
    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>
  11. C:\work\php-5.2.5 ディレクトリに移動する
  12. cscript /nologo win32\build\buildconf.js を実行する
  13. cscript /nologo configure.js --disable-all --enable-cli --enable-cgi --enable-object-out-dir=.. --disable-ipv6 を実行する。デバッグを有効にする場合は最後に --enable-debug を追加します。
  14. nmake を実行する
  15. すべてうまくいけば、PHP CLI の実行ファイルが C:\work\Debug_TS\php.exe あるいは C:\work\Release_TS\php.exe にできあがります。

Build Environment

PHP のコンパイルとビルドにはマイクロソフトの開発環境が必要です。 以下の環境をサポートしています。

  • Microsoft Visual C++ 6.0 (公式)
  • Microsoft Visual C++ .NET
  • Microsoft Visual C++ 2005, Windows Platform SDK および .NET Framework SDK (現在)

公式の Windows 版は VC6 (Microsoft Visual C++ 6.0) で作成していますが、これは現在 Microsoft のウェブサイトからはダウンロードできません。 フリーで Windows 版の PHP をビルドしたい方は、Microsoft Visual C++ 2005 Express Edition と補助コンポーネントを使用してください。

Microsoft Visual C++ 2005 Express の設定

注意: これらのコンポーネントは非常に大きなものであり、 すべてあわせると 1 ギガバイト以上のディスク容量が必要となります。

Microsoft Visual C++ 2005 Express の設定は少し複雑で、 3 つの別々のパッケージをインストールする必要があり、 互換性にかかわる変更もあります。 これらの 3 つのプログラムがインストールされた場所を覚えておくようにしましょう。 以下のプログラムをダウンロードしてインストールします。

インストールしたら、その後にいくつかの作業があります。

  • » MSVC 2005 Express は、 Windows Platform SDK を使用するように設定する必要があります。 PHP でグラフィカルなユーザインターフェイスを使用しないのなら、 次のステップを実行する必要はありません。
  • Windows Platform SDK には WinResrc.h というファイルが含まれています。通常、このファイルは SDK をインストールしたディレクトリの下の Include フォルダにあります。 これをコピーして winres.h という名前に変更します。PHP はこの名前のファイルを使用します。

最後に、MSVC 2005 Express をコマンドラインから使用する場合は、 いくつか環境変数を設定する必要があります。 vsvars32.bat というファイルが、通常は C:\Program Files\Microsoft Visual Studio 8\Common7\Tools にあります (見つからなければ検索してください)。 このファイルには、PATH や INCLUDE そして LIB などの環境変数の宣言が書かれており、 それぞれ SDK のインストールディレクトリ配下の bininclude そして lib ディレクトリを含めるようになっています。

注意: .NET SDK のパスは既に vsvars32.bat に含まれているでしょう。 というのも、この SDK は自身のインストール先を Microsoft Visual C++ 2005 Express と同じディレクトリにするからです。

ライブラリ

ダウンロードしたファイルを展開するには、ZIP 展開ユーティリティが 必要です。Windows XP 以降のバージョンでは、ZIP 展開機能が すでに組み込まれています。

始める前に、ダウンロードしなければならないものがいくつかあります。

最後に、PHP 自体のソースが必要となります。最新の開発版を » anonymous CVS から、または » スナップショット、あるいは 最新のリリース版の » ソース tar ボールをダウンロードします。

ファイルの配置

必要なパッケージをすべてダウンロードしたら、 ファイルを適切な位置に展開しなければなりません。

  • すべてのファイルを展開するための作業ディレクトリを作成します。 例えば C:\work
  • 作業ディレクトリ (C:\work) 配下に win32build ディレクトリを作成し、そこに win32build.zip を展開します。
  • 作業ディレクトリ (C:\work) 配下に bindlib_w32 ディレクトリを作成し、そこに bindlib_w32.zip を展開します。
  • 作業ディレクトリ (C:\work) 配下に PHP のソースコードを展開します。
  • 必要となるライブラリをビルド (あるいはもしバイナリが入手可能なら それをダウンロード) し、ヘッダおよびライブラリをそれぞれ C:\work\win32build\include およびC:\work\win32build\lib ディレクトリに配置します。
  • cygwin 版の bison および flex をインストールしていない場合は、 configure スクリプトがこれらのツールを見つけられるようにするために C:\work\win32build\bin ディレクトリを PATH に追加する必要があります。
上記の手順を行えば、ディレクトリ構造は以下のようになっているはずです。
+--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 もデバッグモードでビルドしないとリンクできなくなる からです。 適切な設定を用いてビルドします。

  • GUI ユーザの場合、C:\work\bindlib_w32\bindlib.dsw をダブルクリックして VC++ を起動します。 そして Build=>Rebuild All を選択します。
  • コマンドラインユーザの場合、C++ 環境変数が設定されているか、あるいは vcvars.bat を既に実行したかを確認してください。 そして、以下のコマンドを実行します。
    • msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"
    • msdev bindlib.dsp /MAKE "bindlib - Win32 Release"
この時点で、使用可能な resolv.libC:\work\bindlib_w32\Debug または Release サブディレクトリのどちらかに存在します。 このファイルを C:\work\win32build\lib ディレクトリの同名のファイルに上書きコピーしてください。

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

この章では、新しいビルドシステムを使用して 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 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 をビルドしてください。