[PHP-users 17503]PHP+Oracle8iのNLS_LANGについて

Yuuna Morisawa marth @ pop11.odn.ne.jp
2003年 8月 26日 (火) 04:10:53 JST


初めまして森澤と申します。

Solaris8+Apache2+PHP4.3.2でOracke8iとの連携したPHPコードを書いています。

日本語が文字化けするので、googleなどで検索した結果、環境変数にNLS_LANGを
適切に設定すればいいことがわかりました。

開発ポリシーの関係で、apacheの起動ユーザー(nobody)に環境変数をセットする
ことができないのでsetenvをつかってNLS_LANGの設定をおこないました。

以下のようなコードを書いた場合にエラーが発生してしまいます。

<?
putenv("ORACLE_HOME=/somewhere/oracle/product/8.1.7");
putenv("ORA_NLS33=/somewhere/oracle/product/8.1.7/ocommon/nls/admin/data");
putenv("PATH=/somewhere/oracle/product/8.1.7/bin");
putenv("NLS_LANG=Japanese_Japan.JA16SJIS");
putenv("LD_LIBRARY_PATH=/somewhere/oracle/product/8.1.7/lib");

//phpinfo();

$con=Ora_Logon("HOGE @ TNSNAME","HOGE");

?>
ブラウザから開いた場合に、
>Warning: Oracle: Connection Failed: ORA-12705: invalid or unknown NLS
parameter value specified 

というエラーが発生します。NLS_LANGをJapanese_Japan.JA16EUCなどに変えてみ
ましたがエラーが発生します。

このエラーが
・Oracle側との文字コードが一致してないからエラー
(一応文字コードを無視すれば接続ができている)
・php.ini内のmbstring.internal_encodingと一致してないからエラー
・そもそもスクリプト内でNLS_LANGをputsevで環境変数設定しても動かない
(Apache起動時じゃないとダメ)

なのか判別がつかないので困っております。シェルにすら入れさせてくれない環
境のためにスクリプトとエラーコードのみを頼りにして開発をしております。

どなたか情報お持ちの方がいらっしゃいましたらよろしくお願いします。

よろしくお願いします。

-----------------------------------------
Yuuna Morisawa<marth @ pop11.odn.ne.jp>





PHP-users メーリングリストの案内