を参考にセットアップ
環境
Ubuntu 8.04
Ruby1.8.6
Apache 2.2.8
Oracle Instantclient 11.2
ruby-oci8
環境変数設定
$ export LD_LIBRARY_PATH=/opt/oracle/instantclient_11_2
$ export NLS_LANG=Japanese_Japan.UTF8
でコンソールでは文字化けせずに日本語の入った列もselectできた。
ところが同じスクリプトをCGIから実行すると日本語が文字化けする。
[Fri Dec 04 08:44:47 2009] [error] [client 127.0.0.1] Premature end of script headers: hogehoge.cgi
env.c:257:in oci8lib.so: Error while trying to retrieve text for error ORA-12705 (OCIError)
from /usr/local/lib/site_ruby/1.8/oci8.rb:229:in `initialize'
from /usr/local/lib/site_ruby/1.8/hoge/hogehoge.rb:309:in `new'
from /usr/local/lib/site_ruby/1.8/hoge/hogehoge.rb:309:in `initialize'
from /var/www/hogehoge.cgi:4:in `new'
from /var/www/hogehoge.cgi:4
Apacheの起動スクリプトに環境変数を設定してもだめ、検索した結果Apacheの環境変数は
SetEvnディレクティブでセットすることが分かりapache2.confを編集後再起動し無事に日
本語が表示できた。
...
SetEnv LD_LIBRARY_PATH /opt/oracle/instantclient_11_2
SetEnv NLS_LANG Japanese_JAPAN.UTF8
...
/etc/apache2/apache2.conf