phpbar.de logo

Mailinglisten-Archive

Re: [php] Php unter Windows - Apache
Archiv Mailingliste php_(at)_infosoc.uni-koeln.de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [php] Php unter Windows - Apache




> Rudolf Koch wrote:
> action application/x-httpd-php3 "/php3/php.exe"
> 
> Ich weiß nicht, was der pfad am ende bedeuten soll und ob ich den gegebenfalls noch ändern muss.

CGI PHP kann man so aktivieren:

1. Man definiert ein Verzeichnis als CGI Verzeichnis:

<Directory /home/www/servers/phplib.shonline.de/cgi/>
Options ExecCGI
AllowOverride None
</Directory>

Hier wird das Verzeichnis /home/www/.../cgi als
Verzeichnis zur Ausführung von CGI-Dateien 
gekennzeichnet, indem für das Verzeichnis das
ExecCGI Attribut gesetzt wird.

2. Man definiert für dieses Verzeichnis eine URL

ScriptAlias  /cgi/      /home/www/servers/phplib.shonline.de/cgi/

Die URL /cgi/ wird jetzt auf dieses Verzeichnis
/home/www/.../cgi/ abgebildet.

Man kann jetzt in diesem Verzeichnis eine ausführbare Datei
ablegen, die den folgenden Text ausgibt:

-----
Content-Type: text/plain

Hallo, Welt.
-----

Dies kann zum Beispiel eine Batch- oder Scriptdatei in
der lokalen Scriptsprache es Systems sein. Wenn man
diese Datei unter der URL 

http://meinserver.de/cgi/name_des-scripts

aufruft, muss man den Text "Hallo, Welt." angezeigt bekommen.
Gelingt dies nicht, sollte man durch das Error Log toben und
nachsehen, was dort schiefgeht.

3. Man installiert den PHP-Interpreter im CGI-Verzeichnis
und prüft, ob man ihn als CGI-Programm aufrufen kann. Dazu
ist der Interpreter nach /home/www/.../cgi zu kopieren und
dann unter der URL http://.../cgi/php oder http://.../cgi/php.exe
oder wie immer der Interpreter heißt aufzurufen.

Dabei MUSS die folgende Fehlermeldung kommen:

Security Alert! PHP CGI cannot be accessed directly. 

This PHP CGI binary was compiled with force-cgi-redirect enabled. This means that a page will only be served up if the
REDIRECT_STATUS CGI variable is set. This variable is set, for example, by Apache's Action directive redirect. 

Kommt die Meldung nicht, ist das PHP-Binary unsicher und sollte
durch ein korrekt compiliertes Binary ersetzt werden.

4. Man definiert eine Scriptaktion, die das o.a. Binary startet
und definiert eine Endung, die durch diese Aktion abgehandelt wird:

a) Dies

Action       php3-script /cgi/php

teilt dem Apache mit, daß der interne MIME-Typ "php3-script"
durch die URL /cgi/php (oder wie immer die URL zum
Aufruf des PHP-Interpreters aus Schritt 3 heißt)abgehandelt 
wird. Der MIME-Typ "php3-script" ist illegal und das 
ist gut so, denn er wird nur innerhalb von Apache 
verwendet (er darf nur innerhalb von  Apache verwendet 
werden!).

b) Dies

AddHandler   php3-script .php3

teilt Apache weiterhin mit, daß die Endung .php3
durch den MIME-Handler für den MIME-Type php3-script
abgehandelt wird.

Damit ist man fertig.


Was passiert im einzelnen, wenn http://.../test.php3 abgerufen wird?

1. Apache stellt fest, daß eine Datei mit der Endung 
.php3 verlangt wird. Dafür wird intern der MIME-Type
php3-script erzeugt.

2. Apache stellt fest, daß der MIME-Type php3-script durch einen
Handler definiert ist und führt intern ein URL Redirect von 
/test.php3 nach /cgi/php/test.php3 durch (oder wie immer man 
die Action definiert hat).

3. Die URL /cgi/php/test.php3 verweist auf das URL-Verzeichnis
/cgi, für das per Scriptalias ein physikalisches Verzeichnis
definiert ist: /home/www/.../cgi. Da die Zugriffsrechte
eine Ausführung von CGI in diesem physikalischen Verzeichnis
erlauben, wird /home/www/.../cgi/php gestartet und
die Komponente /test.php3 wird dieses Programm als
CGI-Variable PATH_INFO übergeben.

4. PHP liest die php3.ini-Datei und stellt dort
eine document_root fest. Es nimmt sich diesen
Pfadnamen und klebt PATH_INFO dahinter. Diese
Datei dann durch den Interpreter geöffnet und 
ausgeführt.

Stimmt die php3.ini-document_root nicht mit der
DocumentRoot von Apache überein, kann die Datei
nicht gefunden werden.

Erlauben die Zugriffsrechte der Datei kein Lesen
der Datei durch den Interpreter (suexec beachten!),
kann die Datei nicht ausgeführt werden.

Kristian

-- 
Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00
Using PHP3? See our web development library at
http://phplib.shonline.de/ (GPL)

Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive