ここでは、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 ] のときに、以下のエラーが発生します。
”英数字以外の文字が使用されています。”