PHPのバージョンを上げたら認証ができなくなった †PHPのバージョンを5.3.3から5.6に上げたところ、PukiWikiのBasic認証ができなくなった(ユーザー名とパスワードを入力しても無視され、繰り返し、無限にたずねてくる)という問題が発生しました。以下はその解決法の備忘録です。 RewriteRuleでHTTP_AUTHORIZATIONを設定する †「PHP: PHP による HTTP 認証 - Manual」に投稿されているノートによると、CGI/FastCGI版のPHPの場合、HTTP_AUTHORIZATIONヘッダが自動で設定されないため、$_SERVER['PHP_AUTH_USER']や$_SERVER['PHP_AUTH_PW']、$_SERVER['HTTP_AUTHORIZATION']が設定されないということです(getallheaders関数でも取得できません)。 よって解決法としては、例えば次のような記述を.htaccessに書いて、HTTP_AUTHORIZATIONヘッダを設定します。
この方法で私の場合もうまく行きました。私の利用しているサーバーは、PHPを5.6にすると必ずFastCGIが有効になるようなので、それが原因でこのような問題が起こったのかもしれません。ただ、PHP5.3.3の時からCGI/FastCGI版ではありました。 SetEnvIfで設定する †同じように、SetEnvIfを使用する方法もあります。
セッションを使った認証に切り替える †「自作プラグイン/login.inc.php」を使うと、Basic認証を使わずに、セッションを使って認証できるようになります。
|