ふむふむ... oracle のマルチランゲージ対応ってんで, 環境変数 NLS_LANG に japanese_japan.ja16euc とか設定しとかなきゃなのだが, PHP の場合 httpd から nobody 権限で動かされるので, この辺の設定をどこでやるべきなのやら,ちょっと戸惑う.
いちばん確実で自己完結的な手段として, PHP スクリプトの内部から putenv( ) で環境変数を設定していたんだけど, なんか動いたり動かなかったり妙に不安定だったりする. いろいろやってたら,どうも apache を restart した後の最初の 1コールだけ動くみたい(笑) なんなんだよう...
Web とか色々と検索して調べてみたりすると, 他でも似たような事象があって, apache を起動するスクリプト内で設定してやると, それが apache - PHP - oracle と引き継がれて,うまく動作するらしい. って内容の質問回答が日本とアメリカとドイツで 1つずつ見つかったから, たぶんこれが有力な原因(つーか対処法)なのだろう.
しかし,テスト環境(しかもメイン環境の HDD が壊れて急遽作ったテンポラリ環境) なので,apache のスクリプトも何も, 手で apachectrl start とかやってんですけど(笑) けっきょく,ユーザ root で $ export NLS_LANG=... とか設定して start したら,PHP からの oracle 呼び出しがうまくいくようになった.
はぁ...これってきっと, 知ってる人から見たら「たりめーだバカ」的な内容なんだろうねぇ. もっと経験積まねーと...