PHP + Oracle

2013年3月7日 PHP
PHPでDB(Oracle)と接続する際に色々嵌ったのでメモ。
具体的にはDBに接続出来なかったり、エンコードが上手くいかなかった。
# OCILogonで接続する
$con = OCILogon([username],[password],[db]);

これが上手くいかなかった。しかし下記の方法なら接続出来た。

$db = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
(HOST=[IP address])(PORT=[port])))
(CONNECT_DATA=(SID=[sid])
(SERVICE_NAME=[SERVICE_NAME])))";

直接ソースに書くと接続できる事から、サーバ側のtnsnames.oraが見えてないと判断し、tnsnames.oraへのpathを記述。下記の行を追加した。
# tnsnames.ora へのpathを記述する
putenv("TNS_ADMIN=[path to tnsnames.ora]");


これで接続は出来たが、取得した文字列が文字化けしている。DB側は Japanese_Japan.JA16SJIS だったのでエンコードを sjis → utf-8 にしていたのだが、phpinfo で確認したところ、対象の値が設定されていなかった。調べたらデフォルトで EUC になるらしかったので、NLS_LANG関係で下記の2行を追記した。
# NLS_LANG の値を変更する
putenv("NLS_LANG=JAPANESE_JAPAN.JA16EUC");
putenv("NLS_LANGUAGE=JAPANESE");

JAPANESE_JAPAN.JA16EUC で接続して、その後 UTF-8 にエンコード。
php.ini や httpd.conf で値を設定できるが、サーバを使用しているのが自分だけではないため弄れず、とりあえずこの方法でやってみる事にした。何にせよ、表面上は何とかなったので今回は良しとする。本来は設定しておかないといけないんだけどね。

コメント

最新の日記 一覧

<<  2025年6月  >>
1234567
891011121314
15161718192021
22232425262728
293012345

お気に入り日記の更新

この日記について

日記内を検索