[ Solaris ] PHP5(–with-oci8)のインストールとOracle環境変数の設定(profile, envvars)

Pocket

ここでは、Solaris10 に PHP5 をインストールて、実際に PHP スクリプトから Oracle に接続するまでのセットアップ方法について掲載しています。

スポンサーリンク

Oracle クライアントのインストール

PHP で OCI8 を使用するには Oracle クライアントが必要となりますので、Oracle クライアント(管理者)をインストールします。Solaris10 では Oracle クライアントのインストールは GUI で行えます。なお、インストール中にパッケージの追加や root でのコマンドを要求されたります。インストーラに従えばインストールは Windows でのインストールとあまり変わりません。

注意 : インストールを行うときは root ユーザーで行わないこと

パッケージの追加方法

Oracle クライアントのインストール中にパッケージの追加を要求された場合は、追加しなければいけません。ここでは、インストールメディア ( DVD ) からパッケージを追加する方法を記載します。

※ 実際に、2つのパッケージ ( SUNWi1cs, SUNWi15cs ) のインストールを要求されました

# パッケージがあるディレクトリに移動する(自動マウントされない場合は別途マウントする)
cd /mnt/sol_XXXXXXXX_x86/Solaris_10/Product/
pkgadd -d ./ SUNWi1cs
pkgadd -d ./ SUNWi15cs
oracle 環境変数の設定

OCI8 では、Oracle 環境変数 ORACLE_HOME や LD_LIBRARY_PATH などの環境変数を設定する必要があります。ここでは、すべてのユーザーに設定を有効とするために /etc/profile に Oracle 環境変数の設定を行っています。また、Oracle は /opt/oracle にインストールしてあるものとします。

/etc/profile

ORACLE_SID=ORCL
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/client_1
LD_LIBRARY_PATH=$ORACLE_HOME/lib

export ORACLE_SID
export ORACLE_BASE
export ORACLE_HOME
export LD_LIBRARY_PATH

PATH=$ORACLE_HOME/bin:$PATH
export PATH
PHP-5.3.5 インストール

次に PHP をインストールします。PHP5.3.5 をソースコードからインストールします。PHP から OCI8 を使用するには oci8 拡張が必要ですので configure には –with-oci8 を指定します。その後、make コマンドでインストールします。

※ 必要ないオプションも指定してありますが –with-oci8 によって oci8 は使用可能となります

./configure --prefix=/usr/local/php5 \
            --with-apxs2=/usr/local/apache2/bin/apxs \
            --with-oci8=shared,$ORACLE_HOME \
            --with-pdo-oci=shared,$ORACLE_HOME \
            --enable-sigchild --with-zlib --enable-mbstring --with-libmbfl --enable-zip --with-xsl \
            --with-openssl=/usr/local/ssl --with-openssl-dir=/usr/local/ssl

make
make install
php.ini に OCI8 extension の追加

OCI8 を含めて PHP のインストールは完了しているが、php.ini にその拡張モジュールを有効にする設定をします。

php.ini

extension=/path/to/extensions/oci8.so
extension=/path/to/extensions/pdo_oci.so // これは、PDO 経由で OCI8 を使う場合の拡張

確認環境では /usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626 に拡張モジュールがインストールされていました。また php.ini の extension_dir の設定があれば extension にフルパスを指定する必要はありません。

Oracle への接続確認

以下の php スクリプト ( oci8.php ) で oci8 を使って Oracle に接続することを確認します。

oci8.php

<?php

$conn = oci_connect('username', 'password', 'XE');
var_dump($conn);

正常に接続されることを確認されると、以下のように出力されます。接続 NG の場合も掲載してあります。

php oci8.php
resource(3) of type (oci8 connection) 

## php.ini extension の追加をしていないと以下のエラーとなる
php oci8.php
Fatal error: Call to undefined function oci_connect() in /path/to/oci8.php on line 3
apache 経由での Oracle への接続確認

先述の oci8.php を WWW 公開ディレクトリに配置してブラウザからアクセスしてスクリプトを実行し Oracle へ接続します。以下のように Oracle 環境変数が登録されていないとの理由から接続エラーとなることがあります。

接続 NG エラー内容

Warning: oci_connect() [function.oci-connect]: OCIEnvNlsCreate() failed. 
There is something wrong with your system - 
please check that ORACLE_HOME and LD_LIBRARY_PATH are set and point 
to the right directories in /path/to/oci8.php on line 3
apache2.2 に Oracle 環境変数を設定する

Solaris10 では、apache に環境変数を設定する場合は envvars ファイルに設定します。設定内容は前述の /etc/profile と同様です。

/usr/local/apache2/bin/envvars

LD_LIBRARY_PATH="/usr/local/apache2/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
#
# 以下の oracle 環境変数設定を追加
# 
ORACLE_SID="ORCL"
ORACLE_BASE="/opt/oracle"
ORACLE_HOME="$ORACLE_BASE/product/10.2.0/client_1"
LD_LIBRARY_PATH="$ORACLE_HOME/lib:$LD_LIBRARY_PATH"
PATH="$ORACLE_HOME/bin:$PATH"

export ORACLE_SID
export ORACLE_BASE
export ORACLE_HOME
export LD_LIBRARY_PATH
export PATH

注意

envvars ファイルに export ORACLE_SID=”ORCL” のように1行で記述してはいけません。apachectl [ start | stop | restart ] のときに、以下のエラーが発生します。

”英数字以外の文字が使用されています。”

スポンサーリンク


Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>