遅刻の「言い訳」選手権

httpd-2.2.17を使っております。
--enable-suexec でconfigure しておりますが、cgi の中でいくつかのモジュールを使う関係で LD_LIBRARY_PATH を設定する必要があります。

そのため、httpd.conf に
SetEnv LD_LIBRARY_PATH xxxxxxxxxxxx
を記述しております。

ところが、cgi でモジュールを使おうとすると、読み込みに失敗してしまいます。調べてみると SetEnv で設定したはずの LD_LIBRARY_PATH が設定されていません。
さらに、いろいろ調べて suexec を使っているために SetEnv が無効になっていると分かりました。

しかし、suexec はセキュリティ的には便利なのでできれば、使いたいのです。
suexec を有効にしつつ、cgi に環境変数を渡す方法はないでしょうか?

A 回答 (3件)

POSTは標準入力からくるので、 read ln ; echo $ln | ./hello.cgi とかすると


いけると思いますが、試してませんです。

mod_rewite でも環境変数セットできたと思ったのですが、結局 SetEnv と同じようなので
ダメみたいですね。

LD_LIBLARY_PATHにしないで、ライブラリフォルダに放りこむってのはダメなんでしょうか?
Linux系なら /etc/ld.so.conf とかにPATH書いちゃうとか。。。
    • good
    • 0
この回答へのお礼

現在は /usr/lib に ln -s でリンクを作って対応しています。

とにかく、どうやってもsuexec と SetEnv は両立しないということで、諦めるしかないのでしょうか?
これがはっきりすれば、諦めてシンボリックリンクを作る方法で行こうと思います。

しかし httpd のconfigure とかで suexec と SetEnv を両立させる方法があるのなら、それをやった方がすっとスマートなので質問をしています。

お礼日時:2010/11/18 02:52

cgi を別のcgiでwrapするとか言ってみる。


CentOS 5.5 上で shell でwrapしてみたらいけそうだけど。

shell だとイケテないですが、環境変数設定できる言語ならなんでもいいんじゃないかと。

[環境変数変数表示]
$ cat hello.cgi
#!/bin/sh

echo "Content-type: text/html";
echo ""
echo "<pre>"
env
echo "</pre>"

[環境変数設定ラッパー]
$ cat hellowrapper.cgi
#!/bin/sh

export LD_LIBRALY_PATH=$(/usr/bin/readlink -f ../../lib)
./hello.cgi
    • good
    • 0
この回答へのお礼

ご回答有難うございます。

ご回答の方法はcgiのパラメータがgetの場合はうまく行きそうですが、post の時にうまく動くでしょうか?

お礼日時:2010/11/10 11:11

/etc/profileに


LD_LIBRARY_PATH=XXXXXXXXXXXXXXXXXXX
必要なパスを書けばいいのでは

この回答への補足

だめでした。

そもそも /etc/profile で環境変数を設定しても bash で設定される環境変数に影響するだけであり、httpd の環境変数がかわるわけではないのでは?

補足日時:2010/11/09 22:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報