ODBC および DB2 関数 (PDO_ODBC)
導入
PDO_ODBC は PHP Data Objects (PDO) インターフェイスを実装したドライバで、 PHP から ODBC ドライバあるいは IBM DB2 Call Level Interface (DB2 CLI) ライブラリを使用した データベースへのアクセスが可能となります。 PDO_ODBC は、現在 3 種類のデータベースドライバをサポートしています。
- ibm-db2
-
DB2 クライアントを使用した、 IBM DB2 Universal Database、Cloudscape および Apache Derby サーバへのアクセスをサポートします。
- unixODBC
-
unixODBC ドライバマネージャおよびデータベースごとの ODBC ドライバを使用した、データベースサーバへのアクセスをサポートします。
- generic
-
PDO_ODBC が明示的にサポートしていない ODBC ドライバマネージャのためのコンパイルオプションを提供します。
Windows では、PDO_ODBC はデフォルトで PHP コアに組み込まれています。 これは Windows ODBC ドライバマネージャに対してリンクされており、 システムの DSN に登録されているあらゆるデータベースに対して PHP から接続することができます。Microsoft SQL Server データベースに接続する際には、このドライバの使用を推奨します。
インストール手順
-
PHP 5.1 では、PDO_ODBC は PHP ソースの中に含まれています。 PDO_ODBC 拡張モジュールを静的モジュールあるいは共有モジュールとして コンパイルするには次のような configure コマンドを実行します。
- ibm_db2
-
PDO_ODBC を ibm-db2 形式でビルドするには、PDO_ODBC をコンパイルするのと同じマシンに DB2 アプリケーション開発用ヘッダが インストールされていなければなりません。DB2 アプリケーション開発ヘッダは DB2 サーバのインストールオプションに 含まれており、また IBM DB2 Universal Database の » サポートサイト からフリーでダウンロードできる DB2 Application Development Client にも含まれています。
./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/
configure コマンドに DB2 ライブラリおよび ヘッダの場所を指定しなかった場合は、PDO_ODBC はデフォルトとして /home/db2inst1/sqllib を使用します。
- unixODBC
-
configure コマンドに unixODBC ライブラリおよび ヘッダの場所を指定しなかった場合は、PDO_ODBC はデフォルトとして /usr/local を使用します。
./configure --with-pdo-odbc=unixODBC,/usr/local
- generic
-
./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags
実行時設定
php.ini の設定により動作が変化します。
名前 | デフォルト | 変更の可否 | 変更履歴 |
---|---|---|---|
pdo_odbc.connection_pooling | "strict" | PHP_INI_ALL | PHP 5.1.0 以降で使用可能です。 |
pdo_odbc.db2_instance_name | NULL | PHP_INI_SYSTEM | PHP 5.1.1 以降で使用可能です。PHP 6.0.0 で削除されました。 |
以下に設定ディレクティブに関する 簡単な説明を示します。
- pdo_odbc.connection_pooling string
-
ODBC 接続のプール方法を指定します。"strict"、"relaxed" あるいは "off" ("" と同じ) のいずれかです。このパラメータは、 プールされている既存の接続との比較をどの程度厳密に行うのかを 接続マネージャに指定します。
strict
は推奨されているデフォルト設定で、 接続パラメータが完全に一致する場合にのみ既存の接続を使用します。relaxed
は、接続パラメータが似ている場合に 既存の接続を使用します。これはキャッシュの再利用率を高めますが、 (例えば) 仮想ホスト間での接続情報がおかしくなってしまう恐れがあります。この設定は php.ini ファイルでのみ変更可能で、 その内容はプロセス全体に影響します。同じ ODBC ライブラリを使用している すべてのモジュール、たとえば Unified ODBC 拡張モジュール などが影響を受けます。
警告relaxed
を共有サーバで使用してはいけません。 これはセキュリティの問題があるためです。ヒントどうしても変更する必要がない限り、この設定はデフォルトの
strict
のままにしておきましょう。 - pdo_odbc.db2_instance_name string
-
db2 方式で PDO_ODBC をコンパイルした場合、 Linux および UNIX 上で DB2 インスタンスを指定するための環境変数 DB2INSTANCE の値を設定します。これによって PDO_ODBC が DB2 ライブラリの場所を見つけられるようになり、 DB2 データベースへのカタログ接続が可能になります。
この設定は php.ini ファイルでのみ変更可能で、 その内容はプロセス全体に影響します。同じ ODBC ライブラリを使用している すべてのモジュール、たとえば Unified ODBC 拡張モジュール などが影響を受けます。
この設定は、Windows 上では何の意味も持ちません。