BASIC認証がうまくいかない件は、ちょっと原因を間違えていた。
httpd -t でエラーが出なくなっているのに、BASIC 認証しているページにアクセスすると Internal Server Error になるので、Order ディレクティブを直さないといかんのだろうと漠然と思ってたんだが、さっきエラーログを確認すると、Invalid command 'AuthUserFile' のようなエラーが出てた。
結局、httpd -t では .htaccess の記述まではチェックしないんでエラーが出てなかっただけで、根は httpd.conf の修正と一緒。
AuthUserFile ディレクティブを解釈するための authn_file_module モジュールが読み込まれていないというだけの話で、例えば、
LoadModule authn_file_module modules/mod_authn_file.so
を httpd.conf に追加するだけでいい。
そもそも(別のディレクティブのエラーを消そうとして)、access_compat_module を既にロードしているので、Order ディレクティブを Require ディレクティブに修正する必要はなく、アクセスコントロールの記述はそのまま使えるということのようだ。
ということで、例えば
AuthUserFile /usr/local/hogehoge/.htpasswdAuthGroupFile /dev/nullAuthName "Please enter your ID and password"AuthType Basicrequire valid-user
という内容の .htaccess であれば、
LoadModule authn_core_module modules/mod_authn_core.soLoadModule auth_basic_module modules/mod_auth_basic.soLoadModule authn_file_module modules/mod_authn_file.soLoadModule authz_groupfile_module modules/mod_authz_groupfile.soLoadModule authz_user_module modules/mod_authz_user.so
というモジュールのロードを httpd.conf に追加することで、BASIC 認証も問題なく行えるようになった。
でも、まあ、これはうちの環境の話であって、場合によっては authz_host_module もロードしないといけないとかありそうだね。
つーか、今思ったんだけど、最初から外部モジュール全部ロードすりゃ良かったな。
全部ロードしても、そんなに重くなることもないやろ。2.2の時には内蔵してたんだし。
何か、session_cookie_module(mod_session_cookie.so)とか、env_module(mod_env.so)とか、この先必要になってハマったりとかありそうだしなあ。
コメントする