2012-01-11 16 views
1

私はmod_fcgidで動作するApache 2 Webサーバーを持っています。 CGIスクリプトは、例えば、いくつかの環境変数を渡し、その後、Perlプログラムをexec'ingによって実行されます。env変数をfcgiに渡す(perl)

index.cgi: 
#!/bin/sh 
export TEST_VAR=test 
exec test.pl 

test.pl: 
#!/usr/bin/perl 
use CGI::Fast; 
while ($q = new CGI::Fast) { 
    print "Content-type: text/html\r\n\r\n"; 
    print "$ENV{TEST_VAR}"; 
} 

これは、「でSetHandler fcgidスクリプト」を介して、例えば(FCGIせずに実行しているときに正常に動作しますが、それを有効にするときに.htaccess)、TEST_VARは渡されません(最初の実行でさえも)。それ以外では、fcgiは動作しているように見えます。

これについては、どのようなアイデアや提案方法がありますか?私は様々な構成上の理由から上記のように外部環境を設定する方が好きですが、必須ではありません。

ありがとうございます!

+0

設定ファイルを使用するのは可能でしょうか?私は、環境変数に頼るよりもはるかに明確に(そしてより一貫して)物事をする傾向があることがわかります。 – Ilion

答えて

0

私はあなたのapache設定を確認/更新する必要があると思います。

1)まず、Apacheが設定した環境を確認します。 FastCGIアプリケーションへの要求ごとの環境変数を渡すために

、見てい::FastCGIのウェブサイトからmod_env(するSetEnv、PassEnv、unsetenvをする)...

FCGIマニュアルから:

多分それはいくつかあります

... FastCGIアプリケーションに渡す環境変数を定義する

使用FcgidInitialEnv %ENVで終わる前に環境変数を変更するOS/sandbox/virtual machine/chrootの奇妙なセキュリティ機能?

2)FastCGIスクリプトのファイル拡張子は通常.cgiまたは.plではなく.fcgiです。 ApacheはあなたのスクリプトをFastCGI/FCGIとして認識しますか? AddType/AddHandler/SetHandler/FastCgiServerのApache設定では何を設定しましたか?

また、私はあなたのperlスクリプトがメモリに残っているとは確信していません。シェルスクリプト内のexecは、スクリプトが実行された後に終了すべき新しい "標準" perlサブプロセスを生成しますか?