Gerade eben habe ich mich ein wenig mit einem PHP-Script herumgeärgert, welches per “Basic Authentication” die Nutzerdaten bekommen möchte. Da ich ein komplexes Setup aus Apache, mod_fcgid und PHP fahre, ging die normale Authentifizierung wie in mod_php leider nicht. Ein Hinweis auf php.net behob die Problematik. Man legt zunächst eine .htaccess mit folgendem Inhalt an:

1
2
3
4
# PHP (CGI mode) HTTP Authorization with ModRewrite:
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

Im PHP-Script muss man nun folgendes vor der Benutzerprüfung eintragen:

1
2
3
4
5
6
if (isset($_SERVER['HTTP_AUTHORIZATION']))
{
 $ha = base64_decode( substr($_SERVER['HTTP_AUTHORIZATION'],6) );
 list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $ha);
 unset($ha);
}

Damit ist die Sache gegessen ;)

Wahlweise kann man, wie in den Kommentaren schon erwähnt, auch patchen. Hier findet sich der patch (Mirror von mir) und hier die Diskussion dazu. Wahlweise hier noch ein Thread dazu (Passender Patch)