tnsnames.oraを参照してPHPをOracleに接続するほうほう

tnsnames.oraを参照してPHPをOracleに接続するほうほう

tnsnames.oraを参照してPHPをOracleに接続する必要になりました
というのもLAC構成ではサーバーそれぞれにはIPがあるけど、それの中央サーバーみたいなのは存在しないそうで・・・

こういう接続の方法をOracle Netというらしいです(あってるのか?)


前提条件としてPHPがあるwebサーバーにOracleはインストールされていません
PHPでOracleを使う為に必要な5つのこと | のぶろぐでやったとおりにOracle InstantClientはインストールされています

元々の接続の方法

~~~
$conn = oci_connect(‘hr’, ‘welcome’, ‘localhost/ORCL’);
~~~

方法1

tnsnames.oraのパスを変更する
~~~
cp /usr/lib/oracle/11.2/client/network/admin/tnsnames.ora /etc
~~~

PHPにORACLE_HOMEがわからないのか、何なのかわかりませんがetc以下に置くと認識できる模様
ただ強引すぎる気がします(´Д`;)ヾ

ちなみにphpinfo()を見る限りではちゃんとOracle InstantClientで設定したパスが入っています

方法2

PHPにtnsnames.oraの位置を強引に教えてあげる
~~~
putenv(“TNS_ADMIN=/usr/lib/oracle/11.2/client/network/admin”);
$conn = oci_connect(‘hr’, ‘welcome’, ‘ORCL’);
~~~

oci_connect()をする前にputenvでTNS_ADMINを設定してあげるとtnsnames.oraの位置が明示的に変えられるらしい
apacheに書いてみたけど効かなかったのでここはPHPでやらないとダメらしい

と言った感じで半日戦った記録なのでしたヽ(`Д´)ノ