インストール手順

この PECL 拡張モジュールをインストールする方法は、 マニュアルの PECL 拡張モジュールのインストール という章にあります。 新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG といった関連する情報については、次の場所にあります。 » https://pecl.php.net/package/sam.

SAM フレームワークおよび MQTT サポートをビルドして使用するためには、 特にその他の前提条件はありません。 MQTT 以外のプロトコルのサポートはライブラリとして提供されており、 クライアント側のコードの中にはは XMS を使用するものもあります。

組み込みの MQTT サポートを使用したいだけである場合は、 SAM を拡張モジュールとしてビルドして設定するか、 あるいは単に php_sam.php を PHP スクリプトから require あるいは require_once で読み込みます。この場合は、 コードをインストールするだけでよく、拡張モジュールをビルドする必要はありません。 これを行うには、pear インストーラで次のように指定します。

pecl install -B SAM

Linux でのインストール手順

SAM 拡張モジュールは PECL モジュールとして提供され、 次の手順でダウンロード、インストールすることができます。

pecl install sam
(php の環境にもよりますが、おそらく root になる必要があるでしょう)

このモジュールを PHP に読み込ませるために、 php.ini に以下を追加します。

extension=sam.so
XMS サポートを使用して IBM Messaging and Queuing family にアクセスしたい場合は、 SAM XMS 拡張モジュールも有効にしなければなりません。
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 になる必要があるでしょう

最新のソースを使用したい場合は、SVN からソースを取得して、 上の手順で手動ビルドします。

Windows でのインストール手順

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 SDK Microsoft Windows Platform も必要となります。これも Microsoft のウェブサイトからダウンロードできます。

SAM 拡張モジュールのソースを、pear を使用して (pear download sam) あるいは SVN から取得し、それを 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
SAM フレームワークおよび XMS サポートをビルドするのなら
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
また、もし XML サポートを使用するのなら、sam_xms 拡張モジュールも make しなければなりません。
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
XMS サポートを使用して IBM Messaging and Queuing family にアクセスしたい場合は SAM XMS 拡張モジュールも有効にする必要があります。
extension=php_sam_xms.dll

Visual Studio 2005 用の追加手順

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
XMS 機能を使用する場合は、同様に SAM XMS DLL も指定しなければなりません。
mt.exe -manifest php_sam_xms.dll.manifest -outputresource:php_sam_xms.dll;2

SAM 拡張モジュールを Microsoft Visual Studio 2005 のコンパイラやライブラリでビルドした場合は、 ランタイムコンポーネントが SAM を使用する予定のシステムにインストールされている必要があります。 そのためには、そこに Visual Studio 2005 をインストールするか、あるいはフリーで配布されている » ランタイムパッケージ を使用します。