PHP マニュアル
前のページ | 第 46章Zend API: PHP のコアをハックする | 次のページ

# 拡張モジュールの使用

選択したビルド方式によって、新しい PHP バイナリを Web サーバにリンクする (あるいは CGI として実行する) か .so (共有オブジェクト) ファイルを 作成するかのいずれかとなります。ファイル `first_module.c` を共有オブジェクトとしてコンパイルしたのなら、結果として `first_module.so` が出来上がります。これを 使用するために最初にしなければならないことは、出来上がったファイルを PHP からアクセス可能な位置に配置することです。とりあえず試してみるなら、 そのファイルを `htdocs` ディレクトリにコピーして 例46-3 のソースで試してみましょう。 PHP バイナリに組み込む形式でコンパイルした場合は dl() のコールを省略します。そのモジュールの 機能はスクリプト内からすぐに利用可能です。

警告
セキュリティを確保するため、動的モジュールを公開ディレクトリに 配置してはいけません。公開ディレクトリに 配置することもできなくはないですし それによってテストも簡単にできますが、実運用環境では 別のディレクトリに配置すべきです。

例 46-3. first_module.so をテストするためのファイル

`<?php // 必要に応じて次の行のコメントを解除します // dl("first_module.so"); $param = 2; $return = first_module($param); print("'$param' を送信すると、'$return' が返されました"); ?>`

この PHP ファイルをコールした結果は、以下のようになります。 '2' を送信すると、'2' が返されました

必要なら、dl() 関数をコールすることによって 動的モジュールを読み込みます。この関数は 指定した共有オブジェクトを探し、それを読み込み、そして その関数を PHP から使用できるようにします。 このモジュールが提供する関数は first_module() で、ひとつのパラメータを受け取ってそれを整数に変換し、 変換結果を返します。

同じ結果が得られましたか? おめでとう! はじめての PHP 拡張のビルドがこれで完了しました。

前のページ | ホーム | 次のページ
拡張モジュールの作成 | 上に戻る | トラブルシューティング