2010-12-10 6 views
2

私はここで奇妙な問題を抱えています。私は(作業中の)サイトを私が直接アクセスすることができない新しいApacheサーバーに移動しています(私は2人で作業しなければなりません)。

このサイトでは、adframeというperlスクリプトを使用してhtmlテンプレートを解析しています。呼び出されたURLは/cgi-bin/adframe/index.html?x=somethingadframeはスクリプトです。不足している接尾辞は実際の問題を引き起こしませんでした。しかし、この新しいUbuntuサーバーでは、$ENV{'QUERY_STRING'}は常に空です。 $ENV{'REQUEST_METHOD'}はGETとして正しく表示されますが、query_stringには何も表示されません。

通常の.cgiスクリプトでは問題なくquery_stringが表示されます。

ログから、サーバーがfastcgi、mod_fcgidを実行しているように見え、サーバーはスクリプトの拡張子として.plを受け入れないこともあります。私はサーバーソフトウェアでそれほど多くの経験はありませんが、サーバがcgiスクリプトとしてadframeを受け入れず、正しくquery_stringを渡していないという問題があると思いました...誰かに私に何かのヒントを教えてもらえますか?管理者または.htaccessで自分でできることを指摘することができますか?とにかく、adframeはCGIスクリプトとして認識されます! (それが問題ならば...)

何か助けてください! トーマス

編集:私は詳細が見つかりました:サーバーは、ワニスキャッシュを実行しているようだ...私の通常の構成との主な違いは、thatsのだ... また、スクリプトが動作する方法があり、あなたが呼び出す場合/ $ ENV {PATH_INFO}はどのテンプレートを解析するかを示し、$ ENV {QUERY_STRING}はクエリ文字列です。今度はクエリ文字列は空ですが、/ cgi-bin/adframe?x = something(PATH_INFOなし)を呼び出すと、クエリ文字列が表示されます。 誰でもここで何が起こっているのか考えていますか?感謝! ありがとう!

+0

実際に実行されますか? (たとえば、エラーを返すか、パラメータなしで呼び出されたかのように正しく実行されますか?)また、サーバーに一致するPOST要求を送信するとどうなりますか? – DVK

+0

こんにちは、ヒントのおかげで。はい、パラメータが渡されなかったかのように実行されます。POSTはSTDINを介してスクリプトに到達します... – thomas

+0

また、クエリ文字列を取得するために$ cgi-> param()を試しました。運がない。 – thomas

答えて

1

VARNISHキャッシュは、静的コンテンツ(* .htmlなど)からすべてのクエリ文字列を取り除きます... phew

+0

+1それを把握するため! – DVK

0

同じ問題が発生しました。私はperlスクリプトの完全な初心者です。

私は、次の試してみました:

@values = split (/&/, $ENV{'QUERY_STRING'}); 

それは

この仕事didn`tのは、働いていた:

@values = split (/&/, "$ENV{'QUERY_STRING'}"); 

を念のために他の初心者は、同じ問題に遭遇した場合。