SAM フレームワークおよび MQTT サポートをビルドして使用するためには、 特にその他の前提条件はありません。 MQTT 以外のプロトコルのサポートはライブラリとして提供されており、 クライアント側のコードの中にはは XMS を使用するものもあります。
組み込みの MQTT サポートを使用したいだけである場合は、 SAM を拡張モジュールとしてビルドして設定するか、 あるいは単に "php_sam.php" を PHP スクリプトから "requires" あるいは "requires_once" で読み込みます。この場合は、 コードをインストールするだけでよく、拡張モジュールをビルドする必要はありません。 これを行うには、pear インストーラで次のように指定します。
pecl install -B SAM
SAM 拡張モジュールは PECL モジュールとして提供され、 次の手順でダウンロード、インストールすることができます。
pecl install sam
このモジュールを PHP に読み込ませるために、 php.ini に以下を追加します。
extension=sam.so
extension=sam_xms.so
PEAR インストーラを使用できない場合は、 拡張モジュールをダウンロードして手動でビルドします。
pear download sam # sam-<version>.tgz をダウンロードします tar -xzf sam-<version>.tgz cd sam-<version> phpize ./configure make make install # おそらく root になる必要があるでしょう
最新のソースを使用したい場合は、cvs からソースを取得して、 上の手順で手動ビルドします。
SAM のウェブサイトにあるビルド済みバイナリは、非常に限られた範囲のものになっています。 そのため、おそらく自分でビルドすることになるでしょう。この拡張モジュールのビルド手順は、 Windows 上での標準的な拡張モジュールビルド手順と同じです。
SAM 拡張モジュールを使用する予定の PHP と同じバージョンの、 PHP 自身のソースツリーが必要となります。これは php.net から取得します。 取得したソースを、どこかの作業ディレクトリに展開します。
また、PHP 拡張モジュールが使用するライブラリやヘッダを http://www.php.net/extra/win32build.zip から取得し、 作業ディレクトリの下に展開します。
するとこのような状態になります。
c:\php-build\- | |---php-5.0.5--|---build | |---ext | |--- ... | |---win32build--|---bin |---include |---lib
コンパイラが必要です。たとえば、フリーの Visual Studio C++ Express が Microsoft のウェブサイトから取得可能です。 また、Microsoft Windows Platform SDK も必要となります。 これも Microsoft のウェブサイトからダウンロードできます。
SAM 拡張モジュールのソースを、pear を使用して (pear download sam) あるいは CVS から取得し、それを PHP ソースツリーの "ext" ディレクトリ内に作成した "sam" ディレクトリに配置します。
この拡張モジュールをビルドするには、ビルド環境を次の場所から開きます。 start menu->all programs->microsoft platform SDK for windows-> open build environment window->windows 200 build environment-> set windows 2000 build environment (retail)
これは、コマンドプロンプトを開き、プラットフォーム SDK などを使用するためのすべての環境変数を設定します。 次に、Visual Studio 用の環境変数を設定するために、このウィンドウでコマンド "vcvars32.bat" を実行します。
cd c:\php-build などとして、作業ディレクトリに移動します。 そして win32build ツール群にアクセスできるよう、そのパスを環境変数 PATH に追加します。
set PATH=..\win32build\bin;%PATH%
buildconf.bat コマンドを実行します。これは configure.js ファイルを作成します。
cscript コマンドに適切なオプションをつけて実行します。 SAM 拡張モジュールフレームワークと MQTT サポートだけをビルドするのなら
cscript /nologo configure.js --with-sam
cscript /nologo configure.js --with-sam --with-sam_xms="c:\program files\ibm\xms"
とします。sam_xms に渡している追加のパラメータは、XMS ライブラリやランタイムへのパスです。 これらは、このファイルの最初に書いてある前提条件によってインストールされているものです。
cscript のパラメータとして、php のビルドオプションのうちお好みのものを追加したり削除することもできます。
すべてがうまくいけば、あとは SAM フレームワーク用の make を実行するだけです!
nmake php_sam.dll
nmake php_sam_xms.dll
Visual Studio 2005 を使用して DLL をビルドする場合は、 これ以降に進む前に次の追加手順を実行しなければなりません。
作成された DLL (php_sam.dll およびオプションで php_sam_xms.dll) を、PHP をセットアップしたディレクトリ以下の適切な場所にコピーします。 このモジュールを PHP に読み込ませるために、次の行を php.ini に追加しておきましょう。
extension=php_sam.dll
extension=php_sam_xms.dll
SAM 拡張モジュールを Microsoft Visual Studio 2005 のコンパイラでビルドしたい場合は、 さらに追加の手順が必要です。これにより、php_sam.dll が実行時に C ランタイムライブラリとリンクできるようにします。 この追加手順では、依存性マニフェストを DLL に組み込みます。 php_sam.dll が作成されたディレクトリ (通常は、php ソースディレクトリ配下の Release_TS あるいは Debug_TS) に移動し、次のように謎の呪文をとなえます。
mt.exe -manifest php_sam.dll.manifest -outputresource:php_sam.dll;2
mt.exe -manifest php_sam_xms.dll.manifest -outputresource:php_sam_xms.dll;2
SAM 拡張モジュールを Microsoft Visual Studio 2005 のコンパイラやライブラリでビルドした場合は、 ランタイムコンポーネントが SAM を使用する予定のシステムにインストールされている必要があります。 そのためには、そこに Visual Studio 2005 をインストールするか、あるいはフリーで配布されている » ランタイムパッケージ を使用します。