CentOSからOracleへ接続

CentOSのPHP5.6から別サーバで動いているOracleのDBへoci8で接続する方法

Macの場合はこちら

手順

Oracleのドライバのインストール

  1. サーバのアーキテクチャを確認

    uname -a
    
  2. Oracle Instant Clientから 1で確認した環境のbasicSDKをダウンロードしサーバへ保存
    (今回はx86_64だったのでVersion 12.1.0.2 (x86_64)rpmを選択。以降このバージョンが前提)

  3. 以下でインストール

    cd (保存した場所)
    su
    rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
    rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
    
  4. パスを通す

    vi /etc/profile
    # 以下の行を追加
    export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib:$LD_LIBRARY_PATH
    export PATH=/usr/lib/oracle/12.1/client64/bin:$PATH
    

    追記したら保存して終了し

    source /etc/profile
    

    で強制反映させる

peclのインストール

  1. 以下でインストール yum -y install --enablerepo=remi --enablerepo=remi-php56 php-pear

oci8のインストール

  1. peclからインストールするのでDTraceサポートを有効にする

    yum -y install systemtap-sdt-devel
    export PHP_DTRACE=yes
    

    ちなみにこれをしないとerror: oci8_dtrace_gen.h: No such file or directorというエラーになる。 詳細はこちら

  2. oci8をバージョン(Ver.2.0.12)を指定してインストール

    pecl install oci8-2.0.12
    

    oci8の最新版だとPHP7以降の為、2.0系を指定する

  3. インストール中にプロンプトが出れば、

    instantclient,/usr/lib/oracle/12.1/client64/lib
    

    と入力

  4. PHPの設定 php.iniに以下を設定

    extension=oci8.so
    

    (場所が判らない時はphp -i | grep php.ini

  5. 設定の確認

    php --ri oci8
    

    を実行して、

    (略)
    OCI8 Support => enabled
    (略)
    OCI8 Version => 2.0.12
    (略)
    Oracle Run-time Client Library Version => 12.1.0.2.0
    Oracle Compile-time Instant Client Version => 12.1
    

    と出ていればOK

PHPからの接続

Macの場合のPHPからの接続を参照

参考リンク

開発環境