実行時設定

php.ini の設定により動作が変化します。

ibm_db2 設定オプション
名前 デフォルト 変更可能 変更履歴
ibm_db2.binmode "1" INI_ALL  
ibm_db2.i5_all_pconnect "0" INI_SYSTEM ibm_db2 1.6.5 以降で利用可能
ibm_db2.i5_allow_commit "0" INI_SYSTEM ibm_db2 1.4.9 以降で利用可能
ibm_db2.i5_blank_userid "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_char_trim "0" INI_SYSTEM ibm_db2 2.1.0 以降で利用可能
ibm_db2.i5_dbcs_alloc "0" INI_SYSTEM ibm_db2 1.5.0 以降で利用可能
ibm_db2.i5_guard_profile "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_ignore_userid "0" INI_SYSTEM ibm_db2 1.8.0 以降で利用可能
ibm_db2.i5_job_sort "0" INI_SYSTEM ibm_db2 1.8.4 以降で利用可能
ibm_db2.i5_log_verbose "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_max_pconnect "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_override_ccsid "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_servermode_subsystem NULL INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.i5_sys_naming "0" INI_SYSTEM ibm_db2 1.9.7 以降で利用可能
ibm_db2.instance_name NULL INI_SYSTEM ibm_db2 1.0.2 以降で利用可能

以下に設定ディレクティブに関する 簡単な説明を示します。

ibm_db2.binmode int

このオプションは、バイナリデータを PHP アプリケーションで 使用する際のモードを制御します。

  • 1 (DB2_BINARY)

  • 2 (DB2_CONVERT)

  • 3 (DB2_PASSTHRU)

ibm_db2.i5_all_pconnect int

このオプションは、IBM i 上での接続を強制的にすべて持続的接続にします。 基本的に、すべての db2_connect 関数のコールは透過的に db2_pconnect のコールになります。 デフォルトでは、このオプションの値は 0 です。 このオプションは、持続的接続が高速な場合のために便宜上提供されています。 新しいアプリケーションでは、このオプションを使うべきではありません。

  • 0 - 持続的接続、およびそうでない接続の両方を作成できます

  • 1 - すべての接続を持続的接続にします

ibm_db2.i5_allow_commit int

このオプションは、トランザクションの分離レベルを制御します。 デフォルトでは、このオプションの値は 0 です。 よって、コミットの制御は使いません。 このオプションは、配列のキー i5_commit を接続オプションの配列に設定し、 db2_connectdb2_pconnect に渡すことで上書きできます。

  • 0 - コミット制御を使いません。

  • 1 - read uncommitted。ダーティリードの可能性があります。

  • 2 - read committed。ダーティリードは発生しません。

  • 3 - repeatable read。ダーティリードや非再現リードは発生しません。

  • 4 - serializeable。ダーティリードや非再現リードやファントムリードは発生しません。

ibm_db2.i5_blank_userid int

IBM i 上で空のユーザーIDを許可すべきかどうかを制御します。 デフォルトでは、このオプションの値は 0 です。 ibm_db2.i5_ignore_userid と異なり、 このオプションはすべてのユーザーIDを強制的に空にしたり、 ジョブの振る舞いを変えたりはしません。 ただ単に、Db2 に現在のユーザーとしてする際、 空のユーザーIDを渡すことを許可するだけです。

  • 0 - ユーザーIDを空で渡すことを許可しません

  • 1 - ユーザーIDを空で渡すことを許可します。

ibm_db2.i5_char_trim int

このオプションは、IBM i における文字列の右端をトリム処理するかを制御します。 多くのテーブルは固定のカラムサイズを持ち、スペースで埋められているため、 このオプションが便宜のため提供されています。 デフォルトでは、このオプションの値は 0 です。

  • 0 - カラムの値はトリム処理されません。

  • 1 - 返される文字カラムの右端のスペースが削除されます。

ibm_db2.i5_dbcs_alloc int

このオプションは、IBM i における内部バッファの割当て戦略に影響します。 デフォルトでは、このオプションの値は 0 です。 このオプションを設定した場合、 エンコーディング変換時にデータベースが文字列サイズを過小評価した場合に備えて、 さらに大きなサイズのバッファが割り当てられます。 このオプションはバッファ用に6倍のメモリを使用します(最大サイズのUTF-8シーケンスに対応するため)。 切り詰められたデータが返される場合に必要となる可能性があります。

  • 0 - 最低限のバッファサイズが割り当てられます

  • 1 - さらに大きなバッファサイズを割り当てます

ibm_db2.i5_guard_profile int

IBM i 上のデータベースに持続的接続する際、 ユーザーのデータベースのプロファイルを切り替えるかどうかをチェックします。 切り替える場合、データベースから切断します。 デフォルトでは、このオプションの値は 0 です。

  • 0 - プロファイルの切換をチェックしません

  • 1 - プロファイルの切換をチェックし、切り替える場合は切断します

ibm_db2.i5_log_verbose int

このオプションは、 IBM i 上で 警告やエラーなどのSQL診断メッセージを、 常に PHP のエラーログに送信するかどうかを設定します。 通常、このオプションはデフォルトで 0 に設定されているため、 失敗時には簡潔なメッセージ(例:「ステートメントの実行に失敗しました」)のみが PHP のエラーログに送信されます。 ただし、関数が失敗したかどうかを確認する目的で db2_stmt_errormsg を手動で呼び出すことができますし、 またそうすべきである点に注意してください。

  • 0 - 簡潔なメッセージだけをログに残します

  • 1 - 簡潔なメッセージに加えて、SQL診断メッセージをログに残します

ibm_db2.i5_ignore_userid int

IBM i 上で実行される際、かつデータベースに接続する際に、 このオプションはユーザーID を無視します。 また、別々のジョブではなく、PHPジョブの内部でSQL/CLI の機能を実行します。 デフォルトでは、このオプションの値は 0 です。 このオプションを有効にすると、 別々のデータベースサーバーのジョブを使わず、 常に現在のユーザープロファイルを使います。 そして、db2_connectdb2_pconnect に渡されるユーザー名とパスワードを無視します。

  • 0 - 指定されたクレデンシャルを使い、SQL/CLI サーバーのジョブを使います。

  • 1 - 常に空のクレデンシャルを使い、PHP のジョブ中でSQL/CLI ジョブを実行します

ibm_db2.i5_job_sort int

IBM i におけるジョブソートを制御します。 デフォルトでは、このオプションの値は 0 です。 これは IBM i SQL/CLI の SQL_ATTR_CONN_SORT_SEQUENCE 属性に対応します。

  • 0 - *HEX ソートオプションを使い、 バイト単位でソートを行います。

  • 1 - PHP のジョブ向けにジョブソートのシーケンスを使います。

  • 2 - データベースのジョブ向けにジョブソートのシーケンスを使います。

ibm_db2.i5_max_pconnect int

このオプションは、IBM i 上で実行する際、 何回持続的接続が再利用されるかに影響します。 デフォルトでは、この値は 0 です。 つまり、持続的接続は常に再利用されるということです。 このオプションは、 長時間実行されるデータベースのジョブで起こる問題 (つまり、プロシージャでメモリリークが起きた場合など) を回避されるのに役立ちますが、明らかに長期的に役立つものではないでしょう。

ibm_db2.i5_override_ccsid int

IBM i 上の EBCDIC から文字変換に使用する PASE CCSID。 デフォルトでこの値は 0 であり、 PASE ロケール設定から取得されるデフォルトの PASE ジョブ CCSID を選択します。 たとえば、これを 1208 に設定すると UTF-8 を使用します。 この値は、PASE ジョブの CCSID が期待される CCSID と異なる場合、 かつロケールを変更できない場合にのみ変更してください。

IBM i 上の CCSID についてさらに学ぶ場合は、 » IBM documentation を調べてください。 IBM i 上の PASE がどのように CCSID にマップされているかについては、 » IBM documentation を調べてください。

ibm_db2.i5_sys_naming int

このオプションは、IBM i システムに接続する際の命名モードを制御します。 デフォルトでは、このオプションの値は 0 です。 命名モードは、名前の解決方法と名前に許可される構文に影響します。 0 に設定すると、名前の修飾にピリオドを使用し、 名前解決にはデフォルトのライブラリまたはユーザーIDを使用します。 1 に設定すると、名前の修飾にスラッシュを使用し、 名前解決にはジョブライブラリリストを使用します。

  • 0 - SQL の命名モードを使う("SCHEMA.TABLE").

  • 1 - システムの命名モードを使う("LIBRARY/FILE").

IBM i 上の命名モードについて学ぶには、 » IBM documentation を調べてください。

ibm_db2.i5_servermode-subsystem string

このオプションは、 IBM i 上でどのサブシステムデータベースサーバージョブが実行されるかを変更します。 デフォルトでは、このオプションは null であるため、 ジョブは QSQSRVR ジョブのデフォルトサブシステムで実行されます。

ibm_db2.instance_name string

Linux や UNIX オペレーティングシステムにおいて、 このオプションはカタログされたデータベースへの接続で使う、 インスタンス名を定義します。 デフォルトでは、このオプションの値は null です。 このオプションを設定すると、 環境変数 DB2INSTANCE の値を上書きします。

Windows では、このオプションの値は無視されます。