php7 Oracleに接続 sourceからインストール

php
スポンサーリンク

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のホームページを参照してください。

Q&A

ちなみに、oci8入れてなくても、Instant ClientだけいれとけばコマンドラインからはORACLEが操作できるらしいす。

download

x86_64Linux用 入手先

最新のバージョンしか見つからない。。。

インストール方法

公式

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 を付与している。

phpの公式サイト

によると

OCI8 エクステンションを有効にするには、オプション –with-oci8 とともに PHP を構成します。

とある。

また、

無料の » Oracle Instant Client ライブラリを使用している場合、こうします

./configure --with-oci8=shared,instantclient,/path/to/instant/client/lib

とある。

コメント