概要
「インフラとか設定まわりいじってみるか。」と思い立ち、練習がてらBasic認証の設置に挑戦。
手順通り進めたものの、想定したウィンドウが出ない。以下、試したことと解決策を列挙。
環境は以下の通り。
・CentOS 7
・PHP 7.2
・Apache 2.3
準備・試したこと
ファイル
・file.php : 認証をかけたいファイル
・.htaccess : 認証の設定ファイル
・.htpasswd : IDとパスワードの設置場所
中身
<?php
//パスワードを記録したファイルの場所
echo __FILE__;
// /~/file.php
echo '<br>';
//パスワード(暗号化)
echo(password_hash('パスワード', PASSWORD_BCRYPT));
?>
↓.htaccess
AuthType Basic
AuthName "IDとパスワードを入力してください。"
AuthUserFile /~/.htpasswd
require valid-user
(※ファイル末尾は改行入れておく)
↓.htpasswd
admin:(暗号化されたパスワード)
(※ファイル末尾は改行入れておく)
試したこと
・ファイルの記述漏れ、ファイル名の間違い確認
・キャッシュのクリア
・.htaccessの操作権限確認(通常ファイルと同様644等であればよいとのこと)
上記はいずれも問題なしとのこと。しばし調査を続けていたところ、解決策を発見。
解決策
httpd.confから「.htaccess」を使用する許可をすること。
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
# AllowOverride None
AllowOverride All
AllowOvewrrideを「None」から「All」に変更してあげたところうまく動いてくれた模様。
今回お世話になった先人の知恵
・ApacheでBasic認証設定
https://qiita.com/syama1127/items/d72aa5d8786fe19f26ff
・ApacheのBasic認証が効かない場合に確認すべきことはコレ
https://www.yajiuma-soul.com/entry/20160617-1466110800