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に意図する環境変数を書き込んで解決。設定ファイルを優先してほしい。