Apache2.4ではまった話(cgiモジュールとhtpasswd)[メモ]

apache2.4つかってて
1.デフォルトでcgid_moduleがオフになっている。
2.Apache2.4.4のhtpasswdが正常に動かない(バグが有る)
というのにはまった。ということでメモ。


1.デフォルトでcgiモジュールがオフになっている。
cgiがうごかなくて
AddHander cgi-script
とかしても動かず悩んでいたところしらべたら
LoadModule cgid_module modules/mod_cgid.so
がどうやらコメントアウトされているらしい。ということでコメントアウトを解除したら動いた。2.2系だと標準でonになっていたのでまったくきづかなかった。セキュリティ上安全になったということなんだろうけどこういう変更辛い...


2.Apache2.4.4のhtpasswdが正常に動かない(バグが有る)
Apache2.4.4のhtpasswdにはバグがあってうまくパスワードファイルを生成できない。まあ、BASIC認証なんて危険だから使うなよという話はおいておいて(ローカルネットワークだと手軽にできるし)
修正方法としてはソース・コードを展開したディレクトリのsupport/passwd_common.cを書き換えてビルドしなおしてあげればよい。168行目辺りに

pw = pwin;

という部分があるのでこの前に

strcpy(pwin,ctx->out);
pw = pwin;

というふうに追記してやれば良い。
もとのコードではその前の get_password(ctx)という部分でパスワードをctxのoutメンバに書き込んでいるらしいのだがなぜかそれを使わずにpwinをpwに代入している。おそらくこれはpwinにoutの内容を書き込んでからこうする予定だったのだろうなということでstrcpyでpwinに書き込んでやる。そうすればちゃんとうごくというわけ。きっともともとこういうことを想定していたんでしょう。

参考:
http://d.hatena.ne.jp/rougeref/touch/20120521#1337587242
http://apache24.jugem.jp/?eid=7