XAMPPからOracleへの接続メモ(OCI8の設定)

こんにちは、Buggyです。

こちらはデジタルグッズやケチな小遣い稼ぎを中心とした(笑)ブログですが、最近仕事でWindows環境でのXAMPPからOracleへの接続(OCI8の設定)についてハマり、有益な情報を取得するのに時間がかかったため、備忘録として記載します(まぁ、ニッチなネタでアクセス数が見込めそうなのが本音ですが!)。
要点のみを絞って記載しています。

参考になったサイト

こちらのサイトの記載が大変参考になりました。基本的には、こちらのサイトの説明に多少追記した感じになります。以降の文で『参考サイト』とあればこちらのページを指します。

当方の環境情報

Windows:Windows 10 Enterprise 64bit
接続先のOracleバージョン:Oracle Database 19c Standatd Edition 2 Release 19.0.0.0.0 – ProductionVersion 19.14.0.0.0

手順1:XAMPPのインストール

XAMPPをインストール。詳細については割愛します。

執筆時点の最新バージョンは8.1.6でした。

余談ですが、実は試行錯誤してもOracleに全然繋がらず、XAMPPをアンインストール&再インストールしたという流れがあります。現時点でXAMPPが問題なく動いている場合は、わざわざそんなことをする必要はないと思いますので念のため。

手順2:Microsoft Visual C++ XXXX 再頒布パッケージのインストール

Oracleのバージョンが19cの場合、基本的にすべて入れてしまって構わないと思います。私の環境では全部入っていましたので。

手順3:Oracle Instant Clientのダウンロード&解凍

Oracleのサイトより、Oracle Instant Clientをダウンロード&解凍。執筆時点で最新版の『Version 21.6.0.0.0』を使用しています。

『instantclient-basiclite-windows.x64-21.6.0.0.0dbru.zip』をダウンロードし、適当な場所に解凍(例:C:\oracle\instantclient_21_6)

手順4:環境変数を設定

手順3で配置したフォルダ(例:C:\oracle\instantclient_21_6)へPathを通します。
参考サイトにて『システム環境変数ブロックのPath変数に追加します』とあるのでその通りに実施。

手順5:Oracle拡張モジュールDLLのダウンロード&解凍

(日本語・外国語共に)この手順を書いていないサイトが多くて本当に困りました!なぜか上記のOracle Instant Clientのインストールで説明が終わっているサイトが多数・・・
参考サイトに従って、下記サイトよりDLLをダウンロード。参考サイトを熟読して頂きたいのですが、『PHPのバージョン』『PHPのThread Safety』『Windowsが32bitか64bitか』によってダウンロードするDLLが異なりますのでご注意ください。
ダウンロード&解凍したファイル一式を『C:\xampp\php\ext』にコピー。

https://pecl.php.net/package/oci8

私は2つ目の『PHPのThread Safety』に引っかかり、間違ったNon Thread Safe版のDLLをコピーして「何でDLLを認識しない!?」と混乱してしまいました。XAMPPをインストール後、特にカスタマイズしていなければenableになっている(=Thread Safe版のDLLを使う)はずです。

手順6:php.iniファイルの修正

下記例に従って「php.ini」ファイルを修正。ここで謎なのが、私の環境ではOracle Database 19cに接続するのですが、『oci8_19.dll』としてそちらを有効にしてもエラーが出てしまいます。エンジニアとしてはいただけませんが「動けばヨシ!」の精神で『oci8_12c.dll』を有効にしています。

手順4~6に誤りがある場合、『php -v』コマンドを実行した際、下記のように「Unable to load dinamic library ‘php_oci8_12c.dll’」のエラーが出ます。DLLがちゃんと『C:\xampp\php\ext』に配置されていても同じメッセージが出るので混乱に拍車がかかりました(苦笑)

手順7:OCI8のインストール確認

ここまでで問題がなければ、Apache再起動後にphpinifoを見に行くと『OCI8』がインストールされていることを確認できます。インストールされていない場合は項目そのものが出てきません。

手順8:Oracleへの接続確認

接続先を設定したサンプルプログラムを動かしてみて、接続OKでしたら作業は完了になります。お疲れ様でした!!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA