hkoba blog

プログラマーです。プログラミング言語ミーハーです。ツッコミ歓迎です。よろしくどうぞ(能代口調)

メモ:mod_fastcgi で FastCgiExternalServer 使いたい時は FastCgiWrapper を Off にしないとダメぽい

Apache2 の mod_fastcgi で 初めてFastCgiExternalServer を使おうとしたらハマったのでメモ。ツッコミ歓迎です。

TL;DR FastCgiWrapper を Off にしないと、他を正しく設定しても 404 Not Found にされてしまう(ぽい)。

プロセスを起動するか、外部で起動したプロセスに繋げるかの判定フラグ

content_handler() を見ると fr->dynamic が肝らしい

fr->dynamic を設定する箇所

create_fcgi_request() のここによれば、 fs == NULL で判定している。

ファイルが有っても fs が NULL になってた…なんで?

create_fcgi_request() のこの箇所が fs を設定している

fcgi_util_fs_get_by_id(const char *ePath, uid_t uid, gid_t gid) は何してる?

ソースのコメントに曰く>

Find a FastCGI server with a matching fs_path, and if fcgi_wrapper is enabled with matching uid and gid.

fcgi_wrapper (suexec の fcgi 版)が有効になっていると uid/gid 検査が走って、それが常に偽なので NULL が返る。

結局、将来 ~user でユーザ権限 suexec な fcgi を使いたくなった時のため…と思って FcgiWrapper を On にしてたのが 引き金でしたと。

かんそう