実行時設定

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

注意:

Informix 用環境変数 INFORMIXDIR および INFORMIXSERVER が PHP ifx ドライバで利用可能であり、INFORMIX のバイナリがあるディレクトリに パスが通っていることを確認してください。テストを始める前に phpinfo() と書いたスクリプトを実行し、 これを確認してください。 phpinfo() があるスクリプトは、これらの環境変数の 一覧を出力します。これは、CGI 版の PHP および Apache mod_php で 共に行われます。これらの環境変数は Apache のスタートアップスクリプトで 設定する必要があります。

また、Informix 共有ライブラリがローダーで利用可能である必要があります (LD_LINBRARY_PATH または ld.so.conf/ldconfig を確認してください)。

注意: BLOB (TEXT および BYTE カラム)の使用に関する注意

通常、BLOB は BLOB ID により指定されます。 select クエリは、BYTE および TEXT カラム毎に "blob id" を返します。 ("ifx_blobinfile(0);" により) メモリー上で BLOB を得ることを選択した場合、 "string_var = ifx_get_blob($blob_id);" で内容を得ることができます。 BLOB カラムの内容をファイルに取得したい場合、 "ifx_blobinfile(1);" を使用してください。 "ifx_get_blob($blob_id);" によりファイル名を得ることができます。 BLOB の内容を得る際には、通常のファイル入出力を行ってください。

insert/update クエリーに関しては、 "ifx_create_blob();" により自分で "blob id" を作成する必要があります。 その後、blob id を配列に代入し、 クエリー文字列の中の blob カラムを疑問符 (?) で置換します。 updates/inserts の場合、ifx_update_blob() で blob の内容を設定するのが便利でしょう。

BLOB カラムの動作は、設定用変数で変更することができます。 これらの変数は、実行時にも設定可能です。

設定変数 : ifx.textasvarchar

設定変数 : ifx.byteasvarchar

ランタイム関数 :

ifx_textasvarchar(0) : TEXT カラムを有する select クエリーに blob id を使用する

ifx_byteasvarchar(0) : BYTE カラムを有する select クエリーに blob id を使用する

ifx_textasvarchar(1) : TEXT カラムを VARCHAR カラムとして返します。 このため、select クエリにおいて blob id を使用する必要はありません。

ifx_byteasvarchar(1) : BYTE カラムを VARCHAR カラムとして返します。 このため、select クエリにおいて blob id を使用する必要はありません。

設定変数 : ifx.blobinfile

ランタイム関数 :

ifx_blobinfile_mode(0) : メモリに BYTE カラムを返し、blob id によりその内容を取り出す

ifx_blobinfile_mode(1) : メモリに BYTE カラムを返し、blob id によりそのファイル名を取り出す

ifx_text/byteasvarchar を 1 に設定した場合、 通常の(しかしやや長い) VARCHAR フィールドのように select クエリーで TEXT や BYTE カラムを使用することが可能です。 全ての文字列は、PHP で "数えられる" ので、これにより、 "バイナリ・セーフ"が維持されます。 これを正しく処理するのはあなた次第です。 返されるデータには何でも含むことができますが、その内容について 責任を負うことになります。

ifx_blobinfile を 1 に設定した場合、blob の内容を得るために ifx_get_blob(..) により返されたファイル名を使用してください。 この場合、行を取得する際に「Informix により作成された テンポラリファイルを削除する」責任があります。 取得された新規の行は、BYTE カラム毎に新規のテンポラリファイルを 作成します。

テンポラリファイルの位置は、環境変数 "blobdir" により設定することが できます。デフォルトは、"." (カレントディレクトリ)です。 putenv(blobdir="tmpblob"); のようにすることにより、誤って残って しまったテンポラリファイルを削除することが容易になります (テンポラリファイルの名前は "blb" で始まります)。

注意: 自動的に "char" (SQLCHAR および SQLNCHAR) データを取り去る

これは、次の設定変数により設定することが可能です。

ifx.charasvarchar : 最後尾のスペースを何らかの削除処理を行わずに 自動的に取り去る場合に 1 に設定します。

注意: NULL

設定変数 ifx.nullformat (およびランタイム関数 ifx_nullformat()) を TRUE に設定した場合、文字列 "NULL" として NULL カラムを返します。FALSE に設定した場合は 空文字列を返します。これにより、NULL カラムと空のカラムを識別することが 可能となります。

Informix 設定オプション
名前 デフォルト 変更可能 変更履歴
ifx.allow_persistent "1" PHP_INI_SYSTEM PHP 5.2.1 で削除。
ifx.max_persistent "-1" PHP_INI_SYSTEM PHP 5.2.1 で削除。
ifx.max_links "-1" PHP_INI_SYSTEM PHP 5.2.1 で削除。
ifx.default_host NULL PHP_INI_SYSTEM PHP 5.2.1 で削除。
ifx.default_user NULL PHP_INI_SYSTEM PHP 5.2.1 で削除。
ifx.default_password NULL PHP_INI_SYSTEM PHP 5.2.1 で削除。
ifx.blobinfile "1" PHP_INI_ALL PHP 5.2.1 で削除。
ifx.textasvarchar "0" PHP_INI_ALL PHP 5.2.1 で削除。
ifx.byteasvarchar "0" PHP_INI_ALL PHP 5.2.1 で削除。
ifx.charasvarchar "0" PHP_INI_ALL PHP 5.2.1 で削除。
ifx.nullformat "0" PHP_INI_ALL PHP 5.2.1 で削除。
PHP_INI_* モードの詳細および定義については どこで設定を行うのか を参照してください。

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

ifx.allow_persistent boolean

持続的な Informix 接続を可能とするかどうか。

ifx.max_persistent integer

プロセス毎の持続的 Informix 接続の最大数。

持続的接続を含むプロセス毎の Informix 接続の最大数。

ifx.default_host string

ifx_connect() または ifx_pconnect() において、ホストが指定されない 場合のデフォルトのホスト。 セーフモード では適用されません。

ifx.default_user string

ifx_connect() または ifx_pconnect() において、 ユーザーが指定されない場合のデフォルトのユーザー。 セーフモード では適用されません。

ifx.default_password string

ifx_connect() または ifx_pconnect() において、 パスワードが指定されない場合のデフォルトのパスワード。 セーフモード では適用されません。

ifx.blobinfile boolean

blob カラムをファイルに返したい場合には TRUE を指定します。 メモリ内に返したい場合には FALSE を指定します。 ifx_blobinfile_mode() により、実行時にこの設定を 上書きすることができます。

ifx.textasvarchar boolean

select 文において TEXT カラムを通常の文字列として返したい場合は TRUE を指定し、blob id パラメータを使用したい場合は FALSE を指定します。 ifx_textasvarchar() により、実行時にこの設定を 上書きすることができます。

ifx.byteasvarchar boolean

select 文において BYTE カラムを通常の文字列として返したい場合は TRUE を指定し、blob id パラメータを使用したい場合は FALSE を指定します。 ifx_byteasvarchar() により、実行時にこの設定を 上書きすることができます。

ifx.charasvarchar boolean

取得時に CHAR カラムから末尾の空白を取り除きたい場合に TRUE を指定してください。

ifx.nullformat boolean

リテラル文字列 "NULL" として NULL カラムを返したい場合に TRUE、 空の文字列として返したい場合は FALSE を指定してください。 ifx_nullformat() により、実行時にこの設定を 上書きすることができます。