apacheでの環境変数

apache2.2.23とかっていうとっても古いバージョンで動作しているウェブサーバーがなぜか稼働していて、これをapache2.4の最新版へバージョンアップ。

するとcgiが動作しない。どうも共有ライブラリが見えないらしい。
設定ファイルを参照するとcgiディレクトリ以下でLD_LIBARARY_PATHをSetEnvで設定している。

<Directory /usr/local/apache2/cgi-bin>
    SetEnv LD_LIBRARY_PATH /var/hoge/lib
  SetEnv ORACLE_HOME /var/oracle/hoge
(以下略)

環境変数だけをエコーバックするcgiをいれて動作確認すると、SetEnvで設定している環境変数のうち、LD_LIBARARY_PATHだけがちゃんと設定されていない。なぜかLD_LIBARARY_PATHが/usr/local/apache2/libに設定されている。

この値(/usr/local/apache2/lib)でいろいろ調べてみると、$APACHE/bin/envvarsってなスクリプトでLD_LIBARARY_PATHが設定されていることを発見。
apachectlからenvvarsが呼び出されて設定されている模様。ふーん、起動時の環境変数のほうが設定ファイルより強いのか。めんどうな。
envvarsに意図する環境変数を書き込んで解決。設定ファイルを優先してほしい。