2011年2月1日火曜日

PHP 5.2をWindows上でビルドする?

本当の目的はこのことじゃないのだが、途中経路としてやってみたのでメモです。

一応のところ、PHPをWindows上でビルドする手順は以下に掲載されている。
http://wiki.php.net/internals/windows/stepbystepbuild
(これはPHP5.3の手順となっているが、PHP5.2でもまあ同様にできる)

手順通りやっていて引っかかった部分があったので、その辺を補足しながら全て説明しよう。
※Windows XPを使いました。


必要なもの
まず、ビルド環境としてMicrosoft Visual C++が必要。VC++6.0が推奨なれど、VC++2008やVC++2005でもOKとのこと。(無償のExpress EditionでもOK)
あと、Windows SDKまたはPlatform SDKが必要。(VC++とWindowsのバージョンに合わせて適当なものをインストールせよということでしょう。)
あとは、追加でビルドのためのWindows用のツールとライブラリが必要。
ツールはこちらbinary-tools.zip
ライブラリはこちらwin32build.zip

※と、書かれていますが現状のところビルドに成功した環境は、Visual Studio 2005とPlatform SDKの組み合わせのみです。(無償のExpress Editionで出来ればな~と思ったんですがイマイチうまくいかなかった。)


詳しい手順
  1. 事前に、Visual Studio 2005のVC++をインストールしておきます。
    (Microsoft Updateで最新の状態にしておきます。)
  2. Microsoft Platform SDK for Windows Server 2003 SP1をインストールする。
    http://www.microsoft.com/downloads/en/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
    Webインストーラのダウンロードページです。(色々バージョンがあるみたいですが、他のバージョンは試してません)
  3. PHPのソースコード(最新開発版スナップショット)をダウンロードする。
    http://snaps.php.net/
    今回はPHP5.2をビルドするのでphp-5.2-devをダウンロードします。
    (PHP5.3をビルドしたい場合はphp-5.3-devの方をダウンロードして、以下は適宜読み替えましょう)
  4. 作業用フォルダを作成します。
    C:\php-sdk
    手順に習ってCドライブ直下にphp-sdkフォルダを新規作成します。
  5. 上記でダウンロードした「binary-tools.zip」を解凍した中身の「bin」と「script」フォルダを、作業用フォルダ直下に配置(コピーまたは移動)します。
  6. Platform SDK のShell(コマンドプロンプト)を起動します。
    スタート→プログラム→Microsoft Platform SDK for Windows Server 2003 SP1
     → Open Build Environment Windows
     → Windows XP 32-bit Build Environment
     → Set Windows XP 32-bit Build Environment(RETAIL)
    で起動できると思います。
  7. 以下、上で開いたコマンドプロンプトにて
    > setenv /XP32 /RETAIL
    > cd c:\php-sdk
    > bin\phpsdk_setvars.bat
    > bin\phpsdk_buildtree.bat php52dev
    1行目は必要ないかもしれませんが、気分的に。
    2行目のパスは作業フォルダのパスに、最後の行のphp52devは好みの名前に変えてもOKです。
    これによりphp52dev以下にphpビルド用のフォルダが作成されます。
  8. 続いて自動作成されたフォルダ内に、Windows用ライブラリとphpソースコードを配置します。
    まず、ライブラリの配置ですが、上記のwin32build.zipを解凍した中身を以下のフォルダにコピーします。
    c:\php-sdk\php52dev\vc9\x86\deps\
    (この下にはすでに「bin」、「include」、「lib」フォルダがありますが、中身は空っぽですので上書きコピーでOKです。)
    次にphp-5.2-devよりダウンロードして解凍したものを以下におきます。
    c:\php-sdk\php52dev\vc9\x86\
    (ダウンロードされるファイルおよび解凍したフォルダ名は、日によって異なります。
    今現在だとphp5.2-201102010330というフォルダが解凍されて出てきました(日付と時刻が名前に入っているようです)。)
  9. コマンドプロンプトより、ビルドを実行します。
    > cd c:\php-sdk\php52dev\vc9\x86\php5.2-201102010330 > buildconf
    Rebuilding configure.js
    Now run 'cscript /nologo configure.js --help'
    > configure --help
    ~コマンドオプションが表示される~(略)
    > configure --disable-all --enable-cli 
    ~(略)~
    ERROR: you chosen output directory no does not exist
    ※エラーでとまります。
    このエラーについてですが、出力先ディレクトリがねぇよと言っているようです。
    対処方法としてはphp5.2-201102010330以下に「no」というフォルダを作成しておきます。
  10. 気を取り直してもう一度ですが、依存ライブラリを読み込むようにオプションを追加して実行します。
    > configure --disable-all --enable-cli --with-php-build="../deps"
    ~(略)~
    Type 'nmake' to build PHP
    ※正常に完了するとこの文字が表示されます。
  11. 最後にnmakeを実行すると、ビルドが開始されます。
  12. > nmake
  13. 「no」フォルダ以下に「Release_TS」というフォルダが作成されphp.exeが出来上がります。
以上?

補足(ビルドの失敗の話)
・VC++2005 Express Edition を使った場合
Platform SDKがVC++2005EEを認識してくれないため、cl等のコマンドが使用できずビルドできない。
・VC++2008 Express EditionとWindows SDK 6.1を使った場合
ビルドエラーが発生した。
なんとかしたらできるかも知れません。

0 件のコメント:

コメントを投稿