- ベストアンサー
httpdの問題:SetEnvが使えない
- httpd-2.2.17を使っており、cgiの中でモジュールを使用するためにLD_LIBRARY_PATHを設定する必要があります。
- しかし、SetEnvで設定したLD_LIBRARY_PATHが読み込まれず、cgiでモジュールの読み込みに失敗します。
- suexecを使っているためSetEnvが無効になっているが、suexecを有効にしつつcgiに環境変数を渡す方法はあるでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
POSTは標準入力からくるので、 read ln ; echo $ln | ./hello.cgi とかすると いけると思いますが、試してませんです。 mod_rewite でも環境変数セットできたと思ったのですが、結局 SetEnv と同じようなので ダメみたいですね。 LD_LIBLARY_PATHにしないで、ライブラリフォルダに放りこむってのはダメなんでしょうか? Linux系なら /etc/ld.so.conf とかにPATH書いちゃうとか。。。
その他の回答 (2)
- NARH
- ベストアンサー率82% (88/107)
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
お礼
ご回答有難うございます。 ご回答の方法はcgiのパラメータがgetの場合はうまく行きそうですが、post の時にうまく動くでしょうか?
- SaKaKashi
- ベストアンサー率24% (755/3136)
/etc/profileに LD_LIBRARY_PATH=XXXXXXXXXXXXXXXXXXX 必要なパスを書けばいいのでは
補足
だめでした。 そもそも /etc/profile で環境変数を設定しても bash で設定される環境変数に影響するだけであり、httpd の環境変数がかわるわけではないのでは?
お礼
現在は /usr/lib に ln -s でリンクを作って対応しています。 とにかく、どうやってもsuexec と SetEnv は両立しないということで、諦めるしかないのでしょうか? これがはっきりすれば、諦めてシンボリックリンクを作る方法で行こうと思います。 しかし httpd のconfigure とかで suexec と SetEnv を両立させる方法があるのなら、それをやった方がすっとスマートなので質問をしています。