![]() Mailinglisten-Archive |
> 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)
php::bar PHP Wiki - Listenarchive