phpからORACLEのDBに接続するには2つのソフトウェアが必要
- Instant Client
- oci8
Instant Client
Instant Clientとは
Oracle Instant Clientとは何ですか。
Oracle Instant Clientとは、リモートの(またはローカルの)Oracle Databaseに接続するアプリケーションを作成し、実行する際に有用なOracle Databaseライブラリ、ツール、およびヘッダー・ファイルを再パッケージ化したものです。Instant Clientは、OCI、OCCI、Pro*C、JDBC、ODBCアプリケーションのほか、PHPのOCI8、Pythonのcx_Oracle、 Node.jsのnode-oracledb、Rubyのruby-oci8 APIなどのスクリプト言語ドライバを実行するために使用できます。SDKパッケージによって、OCIやOCCI APIを使用するCおよびC++プログラムのコンパイル用のヘッダー・ファイルが提供されます。SQL*Plus、Workload Replay Client、Data Pump、SQL*Loaderなどのユーティリティも、Instant Clientパッケージで利用可能です。入手可能なInstant Clientパッケージについては、Oracle Instant Clientのホームページを参照してください。
ちなみに、oci8入れてなくても、Instant ClientだけいれとけばコマンドラインからはORACLEが操作できるらしいす。
download
最新のバージョンしか見つからない。。。
インストール方法
zipの場合、解凍するだけやな。。
SDKのも解凍する必要があると書いてある。
実際、SDKを入れずにphpを./configure したら以下の通り怒られた。
checking Oracle Instant Client SDK header directory... configure: error: Oracle Instant Client SDK header files not found
今回は上記のBasicとSDK以外にコマンドラインでORACLEに接続できるsql*plusを入れることとした。
そのため、以下の3つをダウンロードした。
- instantclient-basic-linux.x64-18.5.0.0.0dbru.zip
- instantclient-sdk-linux.x64-18.5.0.0.0dbru.zip
- instantclient-sqlplus-linux.x64-18.5.0.0.0dbru.zip
それぞれを同じフォルダ内に配置し、unzipコマンドで解凍すると、「./instantclient_18_5/」というフォルダ内にすべてが解凍される。
この状態でphpの./configure –with-oci8=instantclient,/usr/local/lib/instantclient_18_5 (他にもオプションは付けた)を実施したら、うまくいった。
oci8
oci8についてはphpのソースに含まれていた。configureを実施すると、以下のログが出力された。
checking for Oracle Database OCI8 support... yes [1266/3721]
phpの ./configure のオプションには –with-oci8=instantclient,/usr/local/lib/instantclient_18_3 を付与している。
によると
OCI8 エクステンションを有効にするには、オプション –with-oci8 とともに PHP を構成します。
とある。
また、
無料の » Oracle Instant Client ライブラリを使用している場合、こうします
./configure --with-oci8=shared,instantclient,/path/to/instant/client/lib
とある。
コメント