PHPでOracleを使う為に必要な5つのこと

PHPからOracleを使うのもMySQL使うのも大差ないだろなんて思っていた時代もありました・・・(´Д`;)ヾ
はまりまくったのでまとめます

1.Oracle InstantClientの導入

PHPにphp-oci8を入れたいだけなのにまずはrpmを入れることが必要になります

Instant Clientのダウンロード


Instant Clientのダウンロード
からインストール先の環境にあったファイルを取得します
CentOS6 64bitにはInstant Client Downloads for Linux x86-64ですね

必要なファイル

oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
oracle-instantclient11.2-sqlplus-11.2.0.3.0-1.x86_64.rpm ←SQLPlusを使う場合のみ必要
oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm

インストール

「/usr/local/src」配下にダウンロードしたファイルを配置してインストール

参考サイト:Oracle/Instant Client/インストール – PukiWiki

tnsnames.oraによる接続

これをやらないと繋がらない、らしい?
自分も実際繋がらなかったけど、これを下から繋がったのか、これ以外のところでうまく言ったのか不明

tnsnames.oraを使って接続する場合は引用もとのような設定が必要になります

以下のように、Instant Clientがインストールされるディレクトリの配下に
「tnsnames.ora」用のディレクトリを作成して、「tnsnames.ora」を準備します。
※「HOST」、「PORT」、「SID」については、環境に合わせてください。

# mkdir -p /usr/lib/oracle/11.2/client/network/admin
# vi /usr/lib/oracle/11.2/client/network/admin/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Oracleサーバのアドレス)(PORT = 1521))
(CONNECT_DATA =
(SID = orcl)
)
)
# chmod 644 /usr/lib/oracle/11.2/client/network/admin/tnsnames.ora

tnsnames.ora接続は別の記事に書きました→tnsnames.oraを参照してPHPをOracleに接続するほうほう | のぶろぐ

2.php-oci8のインストール

すでにPHPがソースでインストールされていた環境なのでpeclでインストールします

うまくインストールが進むとこんなことを聞かれます

今回はwebサーバーとoracleサーバーが別の環境だったので特に何も入力しないで進んでインストール完了
未検証ですが同じサーバーにoracleがある場合

と入れるべきらしい
参考リンク:【PHP】Instant Client+peclでoci8(oracle)関数を使えるようにする:地方で活動するweb制作者の日々を綴るblog

完了したらphp.iniに追記します

念のためapacheを再起動してから確認します

3.環境変数の設定

NLS_LANGはPHPのmbstring.internal_encodingに設定してあるものと同じものを設定すること

※yum+centosの場合 /etc/sysconfig/httpd に書く必要がある

4.DB名はグローバルデータベース名

すっごい地味にはまりましたが
orcl.mydomainじゃないとだめでした

5.めげない気持ち

Oracleのインストールから初めて2日間かかってようやく接続が出来ました・・
繋がったら繋がったでエラー吐きまくりですがめげずにぐぐりましょう。。

スポンサーリンク

シェアする

フォローする

コメントを残す

トップへ戻る