*PHPのバージョンを上げたら認証ができなくなった [#gc0ca848] PHPのバージョンを5.3.3から5.6に上げたところ、PukiWikiのBasic認証ができなくなった(ユーザー名とパスワードを入力しても無視され、繰り返し、無限にたずねてくる)という問題が発生しました。以下はその解決法の備忘録です。 **RewriteRuleでHTTP_AUTHORIZATIONを設定する [#rc0eca52] 「[[PHP: PHP による HTTP 認証 - Manual>http://php.net/manual/ja/features.http-auth.php]]」に投稿されているノートによると、CGI/FastCGI版のPHPの場合、HTTP_AUTHORIZATIONヘッダが自動で設定されないため、$_SERVER['PHP_AUTH_USER']や$_SERVER['PHP_AUTH_PW']、$_SERVER['HTTP_AUTHORIZATION']が設定されないということです(getallheaders関数でも取得できません)。 よって解決法としては、例えば次のような記述を.htaccessに書いて、HTTP_AUTHORIZATIONヘッダを設定します。 #code(pre){{ <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] </IfModule> }} この方法で私の場合もうまく行きました。私の利用しているサーバーは、PHPを5.6にすると必ずFastCGIが有効になるようなので、それが原因でこのような問題が起こったのかもしれません。ただ、PHP5.3.3の時からCGI/FastCGI版ではありました。 **SetEnvIfで設定する [#d660d8d8] 同じように、SetEnvIfを使用する方法もあります。 #code(pre){{ <IfModule mod_setenvif.c> SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0 </IfModule> }} **セッションを使った認証に切り替える [#xbaac121] 「[[自作プラグイン/login.inc.php>https://pukiwiki.osdn.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/login.inc.php]]」を使うと、Basic認証を使わずに、セッションを使って認証できるようになります。 //これより下は編集しないでください #pageinfo([[:Category/PukiWiki]],2016-02-27 (土) 02:13:29,DOBON!,2016-02-27 (土) 02:13:29,DOBON!) |