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 にしてたのが
引き金でしたと。
かんそう
- 外部プロセス型の FastCGI したいときは nginx の方が楽だと思った(こなみ
- gist-it.appspot.com - Embed files from a github repository like a gist便利ね…あとはてブロ普通に script タグ書けるの便利ね。