Wie _ENV["AUTH_TYPE"] und _ENV["REMOTE_USER"] in Apache 2.2.4 mit PHP als CGI setzen?

Apache, Lighttpd, nginx, Cherokee
m.m.
Posts: 45
Joined: 2009-09-07 19:32

Wie _ENV["AUTH_TYPE"] und _ENV["REMOTE_USER"] in Apache 2.2.4 mit PHP als CGI setzen?

Post by m.m. » 2009-09-07 19:54

Hallo,

ich setze gerade meinen ersten vServer (Suse 10.3 mit Plesk 9.0.1 - ja, ich weiss....) auf und ziehe meine Präsenzen dorthin um.

Bei meinem alten Provider war PHP in der Version 5.2.10 als CGI eingebunden. Dennoch(!) wurden dort bei einem Zugriff auf ein mit .htaccess/.htpasspwd Verzeichnis (AuthType Basic) die Environment Variablen _ENV["REMOTE_USER"] und _ENV["AUTH_TYPE"] gesetzt, die dann in einem PHP-Script als

Code: Select all

$_SERVER['REMOTE_USER']
und

Code: Select all

$_SERVER['AUTH_TYPE']
verfügbar waren.

Wie man nun weiß. werden aber eben diese beiden Variablen bei der Nutzung von PHP als CGI eigentlich nicht gesetzt, sondern nur, wenn man mod_php im Apache verwendet!!!

Ich benötige nun in einigen Skripten die HTTP Authorization und bin daher auf der Suche, wie ich diese beim alten Provider vorhandenen Settings auch auf meinem vServer übertragen kann:

Wie bekomme ich Apache/PHP dazu, die beiden ENV Variablen bei einem Zugriff in ein geschütztes Verzeichnis zu erzeugen obwohl ich PHP nicht als Modul sondern als CGI verwende? 8O

P.S.:
1. Ich habe bereits den Umweg über mod_rewrite erfolglos versucht

Code: Select all

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>


2. Ich kann für diese Domain PHP als Modul verwenden, wüsste aber dennoch gerne eine Antwort auf meine Frage. =D>

aspettl
Posts: 10
Joined: 2007-03-11 17:38

Re: Wie _ENV["AUTH_TYPE"] und _ENV["REMOTE_USER"] in Apache 2.2.4 mit PHP als CGI setzen?

Post by aspettl » 2009-09-07 20:51

Das könnte dir helfen:
http://everflux.de/php-basic-authentica ... ache2-498/ (für FastCGI)

m.m.
Posts: 45
Joined: 2009-09-07 19:32

Re: Wie _ENV["AUTH_TYPE"] und _ENV["REMOTE_USER"] in Apache 2.2.4 mit PHP als CGI setzen?

Post by m.m. » 2009-09-07 21:40

Danke Dir!

... leider kann ich fastgi aus anderen Gründen nicht nutzen. Es benutze wirklich noch (das gute alte) CGI.

Auszug aus der httpd.include (anonymisiert):

Code: Select all

<VirtualHost x.y.z.zz:80>
        ServerName   domain.tld:80
        ServerAlias  www.domain.tld
        UseCanonicalName Off
        SuexecUserGroup         user group
        ServerAdmin  "wurscht"
        DocumentRoot /srv/www/vhosts/domain.tld/httpdocs
        CustomLog  /srv/www/vhosts/domain.tld/statistics/logs/access_log plesklog
        ErrorLog  /srv/www/vhosts/domain.tld/statistics/logs/error_log
<IfModule mod_userdir.c>
        UserDir /srv/www/vhosts/domain.tld/web_users
</IfModule>
        Redirect permanent /plesk-stat https://domain.tld/plesk-stat
        Redirect permanent /webstat https://domain.tld/webstat
        Redirect permanent /webstat-ssl https://domain.tld/webstat-ssl
        Redirect permanent /ftpstat https://domain.tld/ftpstat
        Redirect permanent /anon_ftpstat https://domain.tld/anon_ftpstat
        Redirect permanent /awstats-icon https://domain.tld/awstats-icon
        <IfModule mod_ssl.c>
                SSLEngine off
        </IfModule>
        <Directory /srv/www/vhosts/domain.tld/httpdocs>
        <IfModule mod_perl.c>
        <Files ~ (.pl$)>
                SetHandler perl-script
                PerlHandler ModPerl::Registry
                Options ExecCGI
                allow from all
                PerlSendHeader On
        </Files>
        </IfModule>
        <IfModule mod_python.c>
        <Files ~ (.py$)>
                SetHandler python-program
                PythonHandler   mod_python.cgihandler
        </Files>
        </IfModule>
        <IfModule mod_fcgid.c>
                <Files ~ (.fcgi)>
                        SetHandler fcgid-script
                        Options +FollowSymLinks +ExecCGI
                </Files>
        </IfModule>
        <Files ~ (.php)>
                AddHandler php-script .php
                Options +ExecCGI
                allow from all
        </Files>
                Options -Includes -ExecCGI
        </Directory>
        Include /srv/www/vhosts/domain.tld/conf/vhost.conf
</VirtualHost>


P.S.: Plesk habe ich noch auf die 9.2.1 upgedatet (was ein Wort...)

m.m.
Posts: 45
Joined: 2009-09-07 19:32

Re: Wie _ENV["AUTH_TYPE"] und _ENV["REMOTE_USER"] in Apache 2.2.4 mit PHP als CGI setzen?

Post by m.m. » 2009-09-07 22:04

Ich habe gerade das hier:
http://forum.webhostlist.de/forum/quick ... r-cgi.html

und das:
http://forum.webhostlist.de/forum/webse ... p-cgi.html

gefunden. Das bringt mir zwar nicht $_SERVER['REMOTE_USER'] zurück ( ](*,) ) , ist aber immerhin besser als garnichts. Mal sehen...

m.m.
Posts: 45
Joined: 2009-09-07 19:32

Re: Wie _ENV["AUTH_TYPE"] und _ENV["REMOTE_USER"] in Apache 2.2.4 mit PHP als CGI setzen?

Post by m.m. » 2009-09-07 22:14

Leider ist das nicht zielführend :roll:

Genauso wie oben unter 1. beschrieben, werden die ENV Variablen nicht gesetzt und ich werde immer wieder nach einem Passwort gefragt. Testsnippet aus dem Link:

Code: Select all

<?php

if(isset($_SERVER['PHP_AUTH_USER']) && $_SERVER['PHP_AUTH_USER'] === 'test' && isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_PW'] === 'passwort') {
    echo 'Herzlichen Glückwunsch, Sie haben sich als Benutzer "test" mit dem Passwort "passwort" angemeldet.';
}
else {
    header('WWW-Authenticate: Basic realm="Bitte anmelden"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Sie haben auf "Abbrechen" gedrückt.';
    exit;
}

?>

So komme ich nicht weiter...

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Wie _ENV["AUTH_TYPE"] und _ENV["REMOTE_USER"] in Apache 2.2.4 mit PHP als CGI setzen?

Post by Joe User » 2009-09-07 22:52

m.m. wrote:Bei meinem alten Provider war PHP in der Version 5.2.10 als CGI eingebunden. Dennoch(!) wurden dort bei einem Zugriff auf ein mit .htaccess/.htpasspwd Verzeichnis (AuthType Basic) die Environment Variablen _ENV["REMOTE_USER"] und _ENV["AUTH_TYPE"] gesetzt,

Dieses "Feature" stammt aber nicht von PHP-CGI, sondern von dem von Deinem Ex-Hoster eingesetztem CGI-Wrapper (Google hilft)...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

m.m.
Posts: 45
Joined: 2009-09-07 19:32

Re: Wie _ENV["AUTH_TYPE"] und _ENV["REMOTE_USER"] in Apache 2.2.4 mit PHP als CGI setzen?

Post by m.m. » 2009-09-08 10:01

Danke für den Tipp mit dem CGI-Wrapper.

Wenn man nicht weiß wonach man suchen soll, hilft Google auch nicht viel.... (ich habe vor meinem Posting in Google nach einer Lösung gesucht).