lighttpd 1.4.20 は CGI の STDERR をエラーログに出してくれない。

のでちょっとはまった。なんなんだ。

コードを見るとなぜか /dev/null にリダイレクトしちゃっている。

ログを追うと、

http://redmine.lighttpd.net/repositories/revision/lighttpd/2163

この変更によるものらしいが、正直何してるのかよくわからない。

とりあえず STDERR が闇に葬られるとか不便すぎるので

diff --git a/src/mod_cgi.c b/src/mod_cgi.c
index 6f27f8b..18f88c2 100644
--- a/src/mod_cgi.c
+++ b/src/mod_cgi.c
@@ -987,8 +987,6 @@ static int cgi_create_env(server *srv, connection *con, plugin_data *p, buffer *
         *c = '/';
            }

-       openDevNull(STDERR_FILENO);
-
        /* we don't need the client socket */
           for (i = 3; i < 256; i++) {
                  if (i != srv->errorlog_fd) close(i);

などとしておいた。1.4.x 系では今のところ最新の 1.4.20 だけがこうなってる。

チケット作っとこうとしたらもうあった。

http://redmine.lighttpd.net/issues/show/1836

次のバージョンでは直ると良いね。