| PHP4のOCI8を使ってOracle9iに接続する方法を紹介します。尚、Apacheを再度コンパイルする必要があります。
<Apacheの再インストール>
まずダウンロードしたPHPとApacheを展開してください。
DSOに対応したApacheのインストールは次の様に行います。
> tar zxvf apache_1.3.27.tar.gz
> cd apache_1.3.27
> LIBS=-lpthread ./configure --enable-shared=max --enable-module=so
> make
> su
# make install
|
コンフィグオプション説明
LIBS=-lpthread OCIのエラー回避をするためのオプションです。
--enable-shared=max すべてのライブラリを追加。
--enable-module=so DSOを有効にする。
<OCI対応PHP4のインストール>
先ほど、DSO形式でApacheをインストールしたので、モジュールのインストールはapxsを利用します。
> tar zxvf php-4.3.1.tar.gz
> cd php-4.3.1
> ./configure --with-apxs=/usr/local/apache/bin/apxs --with-oci8=/oracle/product/
--with-oracle=/oracle/product/ --enable-sigchild --enable-mbstring
--enable-mbstr-enc-trans --enable-mbregex --enable-zend-multibyte
--without-mysql
> make
> su
# make install
|
確認のため、/usr/local/apache/libexecにlibphp4.soがあるか確認してください。これがApacheのモジュールです。
Apacheのhttpd.confファイルを編集します。/usr/local/apache/confの中にあります。今回はhttpd.confの内容は次の2行を追記および、編集しました。以前の設定がある場合はそれに追記して下さい。
ServerName sansokan
AddType application/x-httpd-php .php
|
コンフィグオプション説明
--with-apxs=/usr/local/apache/bin/apxs APXSを使ってlibphp4.soを生成する。
--with-oci8=/oracle/product/ OCI関数を有効にする。
--with-oracle=/oracle/product/ Oracle関数を有効にする。
--enable-sigchild defunctを防止する。
--enable-mbstring マルチバイト文字列関数
--enable-mbstr-enc-trans ファイルアップロードの文字化けを防ぐ
--enable-mbregex マルチバイト正規表現関数
--enable-zend-multibyte PHP国際化を有効にする。
--without-mysql mysqlを無効にする。
<ApacheとPHP4の設定>
起動スクリプトは以下の様になります。これはApacheの親プロセス所有者の環境変数をセットするという意味です。子プロセス所有者の環境変数ではないことに注意してください。ファイルは/etc/rc.d/init.d/の中に作ります。
#!/bin/sh
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export ORACLE_SID=ckoku
export NLS_LANG=Japanese_Japan.JA16SJIS
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
/usr/local/apache/bin/apachectl start
|
記述したら、これをランレベル5に合わせて、起動させます。Oracleと連携するので、文字コードを合わせるためにphp.ini-recommendedからコピーしたphp.iniに次の行を追加させます。
i18n.internal_encoding
= JAPANESE_JAPAN.JA16SJIS
output_handler = mb_output_handler (119行目)
display_errors = On (282行目)
mbstring.language = Japanese (1014行目)
mbstring.internal_encoding = EUC-JP (1019行目)
mbstring.http_input = auto (1022行目)
mbstring.http_output = SJIS (1026行目)
mbstring.encoding_translation =On (1033行目)
mbstring.detect_order = auto (1037行目)
mbstring.substitute_character = none (1041行目)
mbstring.func_overload = 0 (1051行目)
|
PHPスクリプトのエンコーディングにShift JISを使う可能性がある場合は、さらにphp.iniに以下の行を追加します。
mbstring.script_encoding
= auto
|
「PHPスクリプトの文字コード = mbstring.internal_encodingの文字コード
= NLS_LANGの文字コード」 を指定して下さい。PHPスクリプトとDBから取得した文字での文字化けを防ぐことができます。
以下にPHPとApacheのインストールで注意するべき点をまとめました。
・PHPの設定ファイルでOracleと同じ日本語文字コードを指定してください。
・PHPの設定ファイル php.ini-recommendedはコンパイルしたディレクトリにあります。
/usr/local/lib/php.ini としてコピーして下さい。
・今回PHP4がOracle9iにアクセスする時は、SJISとなります。従って、環境変数は下記の通りとなります。
OracleユーザーのNVL_LANG:NLS_LANG=Japanese_Japan.JA16SEUC
Apacheの親プロセスを実行するユーザーのNVL_LANG:NLS_LANG=Japanese_Japan.JA16SJIS
|