Apache

Apache2.3というか2.4に実装予定のmod_auth_formじゃありません。
こちらのほうです。
まあ、上記ページにApache2.4のほうを使ってねみたいなことが書いてありますが、2.4がなかなかでませんです。
さて、これを何に使うのか、何ができるのかと言うのは問題ではなく、そもそもmakeができません。
環境はCentOS5.4のApache 2.2.3,apr 1.2.7、mod_auth_form 2.05です。


ちなみに、Apache.2.0系だと問題なくmakeできます。まず./configureはこんな感じです。

./configure \
APACHE2_INCLUDE=/usr/include/httpd/ \
APR1_INCLUDE=/usr/include/apr-1/ \
APXS=/usr/sbin/apxs

これでmakeをすると、
/usr/include/apr-1/apr-i386.h:270: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'apr_off_t'
・・・・・・・・・・・・・
mod_auth_form.c:1105: error: 'request_rec' has no member named 'parsed_uri'
make[1]: *** [mod_auth_form.lo] エラー 1
make[1]: ディレクトリ `/root/mod_auth_form-2.05/src' から出ます
make: *** [all-recursive] エラー 1

みたいな感じでエラーが出ます。まあ、エラーの場所がかいてあるのでとりあえずそのファイルを見ます。
/usr/include/apr-1/apr-i386.h:270
typedef  off64_t           apr_off_t;

となってます。off64_tがtypedefされてないっぽいのでググって見るとどうやら、sys/types.hで
#if defined __USE_LARGEFILE64 && !defined __off64_t_defined
typedef __off64_t off64_t;

となっているらしい。というかなってた。
つまり、__USE_LARGEFILE64 が定義されていないのでoff64_tが__off64_t になってない。つまり、
apr-i386.hを
typedef  __off64_t           apr_off_t;

と書き直してmakeすれば、はい終了。

というわけで、めでたくmakeが通ったわけですが、ヘッダファイルをいじるのはなんか微妙なので元に戻してmod_auth_formのMakefileをいじることにします。
mod_auth_formを./configureした後にsrc/Makefileを開くと"DEFS = "で始まる行があります。そこの最後に

-D__USE_LARGEFILE64=1

と足してmakeしてみるとダメでした。そこでググるとどうやらfeature.h内で
#ifdef _LARGEFILE64_SOURCE
# define __USE_LARGEFILE64 1
#endif

となっているらしい。というかなってた。
そんなわけで、先ほどの"DEFS = "の行の最後に
-D_LARGEFILE64_SOURCE=1

を付け足すとめでたく通りました。

※作成から6年前(2292日経過)の記事です。内容が古い可能性があります。
東京都東日本橋の株式会社プレスマンPRESSMAN*Tech