minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

とりあえず色々。
新しいものが上になるように並べてあります。

mod_auth_dbmを使う

Apacheの認証で通常使うのは AuthUserFile ディレクティブ。
ただ、このファイル形式はプレーンテキストであり
ユーザ数が多くなると動作が遅くなるとApacheのドキュメントに書いてある。

そこで使うのが AuthDBMUserFile ディレクティブなのだが。
なぜかエラーが発生する。
しかも、これに関する情報が少ない。
日本語圏ではまず無い。全世界で探してもほとんど無い。

No such file or directory: could not open dbm (type default) auth file:

なんていうエラーメッセージに惑わされてはいけない。
解決法は簡単だ。ずばり、httpd.conf もしくは .htaccess に以下を書くだけ。

AuthDBMType DB

たったこれだけで、問題は何事も無かったように解決する。
ちなみに原因を少し説明してみると。
dbmmanage コマンドで生成されるファイルをfileコマンドで調べてみるとこんな感じ。

Berkeley DB (Hash, version 7, native byte-order)

どうやらこのデータベースファイルは Berkeley DB 形式のようだ。
Apacheのドキュメントで AuthDBMType を見てみる。

AuthDBMType default|SDBM|GDBM|NDBM|DB

この default って何じゃい。
Apacheに標準で付属する dbmmanage が Berkeley DB 形式で吐くんだから
それを default にするのが筋ってもんだろうに。
とにかく、Apacheまでもがこういった無意味なデフォルト値を設定してるとは少々残念だ。
まぁ、最新版では直ってるかもしれないけど。