MacからOracleへ接続
Nov 3, 2016 · mac · serverphpdb
MacのPHP5.6から別サーバで動いているOracleのDBへoci8で接続する方法
CentOSの場合はこちら
手順
Oracleのドライバのインストール
今回はVersion 12.1.0.2 (64-bit)は選択。手順などはこのバージョンが前提
Oracle Instant Clientから
basicとSDKをダウンロード
公式の要件にあるようにOracleDBとPHPのバージョンに合ったものを選択1を全て同じフォルダへ解凍する
cd (ダウンロード先) unzip instantclient-basic-macos.x64-12.1.0.2.0.zip unzip instantclient-sdk-macos.x64-12.1.0.2.0.zip(Ver.12であれば
instantclient_12_1というフォルダ内に全ファイルが解凍された状態になればOK)
フォルダ名がバージョンになっているので解凍したフォルダ名をそのまま使うこと!2をフォルダごと適当な場所に移動
(今回は/Library/Oracle/へ移動)ライブラリのシンボリックリンクを作成
cd /Library/Oracle/instantclient_12_1/ ln -s libclntsh.dylib.12.1 libclntsh.dylibパスを通す
.bash_profileに以下を追記export DYLD_LIBRARY_PATH=/Library/Oracle/instantclient_12_1 export PATH=$PATH:$DYLD_LIBRARY_PATH追記したら保存し、
source ~/.bash_profileで強制反映させる
OCI8をインストール
以下はすでにPHPをインストール済かつPECLが使えない場合なので、
通常はPHPインストールと同時にしてしまうかPECLで追加が恐らく楽
(手持ちの環境ではPECLがなぜか使えなかったので以下の手順)
OCI8(Ver.2.0.12)を
PECLの該当ページからダウンロード解凍する
cd (ダウンロード先) tar -zxf oci8-2.0.12.tgzmakeする
cd oci8-2.0.12 phpize ./configure -with-oci8=shared,instantclient,/Library/Oracle/instantclient_12_1 make installmodulesの中にoci8.soができていればOKライブラリを移動
sudo mv modules/oci8.so /Library/Oracle(とりあえず今回はここで)
PHPの設定
php.iniに以下の2つの項目を設定extension_dir = "/Library/Oracle" # oci8.soを置いた場所 extension=oci8.so(ファイルの場所が判らない時は
php -i | grep php.ini)設定の確認
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からの接続
フレームワークなどを使わずにそのまま接続する場合は、
$user = 'test'; // ユーザ名
$pass = '1234'; // パスワード
$host = '192.168.0.10'; // ホスト
$port = '1521'; // ポート番号
$db = 'sample'; // データベース名(サービス名)
$conn = oci_connect(
$user,
$pass,
'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)'
. '(HOST=' . $host . ')(PORT=' . $port . ')))'
. '(CONNECT_DATA=(SERVICE_NAME=' . $db . ')))']
);
といった感じで接続できる
PHPStormの設定
PHPStormから接続したい場合は、Oracle Instant ClientはVer.12以上が必要
設定は以下の感じ
トラブルシューティング
php --ri oci8で表示されるのにApache上でうまく動かない場合
Apache上でphpinfo()を表示させてoci8が同じ様に表示されるかを確認
表示されていないければApache Environmentを確認して5で設定した環境変数が入っているか確認
詳細は未検証だが、主にmacのデフォルトのApacheを使っている場合に起こる場合があるので、
その場合は、ここを参照して設定してみる
(デフォルトのApacheのユーザとシェルのユーザが違うのでbash_profileなどではApacheの環境変数を変更できないっぽい)
参考リンク
- PHP公式 Oracle OCI8
- Orcale Instant Client (下の方にインストール方法)
開発環境
- Mac 10.11
- PHP 5.6.27 + OCI8 2.0.12
- Oracle Instant Client 12.1.0.2.0
- DBサーバ OracleDB(Win)
