| « FreeBSD 7.2Rにアップグレード | ユーザごとにAUTH先のSMTPサーバを切替えてメール送信 » |
workerで動くApache 2.2.11に@ARGVがうまく渡されない
いつのころからか、Another HTML Lintで、URLを入れて外部のサイトのHTMLの文法をチェックしようとすると、Internal Server Errorが出る。
エラーログを確認してみると、
malformed header from script. Bad header= Another HTML-lint gateway sc: htmllint.cgi
のような表示。
どうやら、HTTPのヘッダが正しく出力されていない模様。
Another HTML Lintのportの方には、変更は行われていないようだし、Apache辺りが原因だと思っていたところ、先日、
のレポートを見付けたので、現在使用しているworkerのApache 2.2.11に以下のパッチを適用してみた。
--- ./modules/generators/mod_cgid.c.org 2008-08-16 07:08:05.000000000 +0900
+++ ./modules/generators/mod_cgid.c 2009-03-22 18:42:30.000000000 +0900
@@ -203,7 +203,7 @@
char *w;
int idx = 0;
- if (ap_strchr_c(args, '=')) {
+ if (!(*args) || ap_strchr_c(args, '=')) {
numwords = 0;
}
else {
どうやら、正解。@ARGVがうまく渡されていなかった模様。
Trackback address for this post
Trackback URL (right click and copy shortcut/link location)
1 comment
捕捉しておくと、Another HTML Lintのhtmllint.cgiは、環境変数QUERY_STRINGに何も設定されてなくて、引数があると、CGIから起動したのではないと判断して、バージョン番号を出力して終了します。
通常、htmllint.cgiはPOSTメソッドで情報を受け取るので、QUERY_STRINGは設定されていないんだけど、MPM_WokerのApacheのバグのせいで、変な引数がくっついてしまい、CGIで起動されたのにもかかわらず、コマンドラインから起動されたと勘違いされてしまい、(HTTPヘッダが出力されないので)上記のようなエラーが出ていたということです。
This post has 30 feedbacks awaiting moderation...