Edgar Ehritt: Ordner hochladen

Beitrag lesen

Hallo,

Der Server und dessen speziell dafür installierte Handler (PHP/PERL/...) entscheidet, welcher Ressource/welchem Script er den Request zur Verfügung stellt.
Was sollen PHP/PERL/... da mitzureden haben?.
Die eingerichteten Handler bekommen den vom Server vorgekauten Request zur Verfügung gestellt

Und zwar wann? Genau dann, wenn der URL erst mal auf eine Script-Datei gemappt werden konnte.

Das trifft auf den Apachen zu, der selbst bei CGI-Anwendungen vorher auf Existenz prüft. Daran haben wir uns alle gewöhnt. Das ist aber kein Standard.

Ob ein Script an einer durch die URL direkt beschriebenen Stelle liegen muss, oder obn der Handler daran noch Mitspracherecht hat, entscheidet der Handler oder dessen Installationsroutine.
In wie fern sollen der Handler oder seine Installationsroutine irgendwas zu sagen haben?

Genau genommen nutzt der Apache einen (internen) Handler, der ganz zum Schluss (also beispielsweise nach mod_rewrite) guckt, ob er eine Datei findet, die er entweder ausliefert, oder einem weiteren Handler (z. B. CGI) angibt. Mod_rewrite ist hier übrigens ein gutes Stichwort. Mit der Flag [PT] kann nämlich das eben beschriebene Verhalten beeinflusst werden. Das führt im Falle eines CGI-Programmes dazu, dass die Pflichvariable SCRIPT_NAME mit einem nicht existenten Pfand gefüllt sein kann. Noch Deutlicher wird dieses Verhalten bei mod_fastcgi.

Wenn aus der URL nicht auf eine Scriptdatei gemappt werden kann, dann kommt der Handler überhaupt nicht erst zum tragen.

PHP kann im Apachen auch als sogenannter Filter eingesetzt werden, was noch zu Deiner Frage nach der Installationsroutine anzumerken ist.
 Ein anderes Beispiel wäre lighttpd. Der überlässt es dem Administrator zu entscheiden, ob der Server von sich aus tätig werden soll, angeforderte Ressourcen mit im FS aufzuspüren, oder ob der Handler sich selbst darum zu kümmern hat. Es ist also nicht selbstverständlich, das der Webserver alle Arbeiten vorab macht und Toms Anmerkung ist von der Betrachtung, hier in die mitwirkenden Bestandteile zu unterteilen, zwar theoretischen aber berechtigt. Denn an sich macht eine Webserver nichts weiter, als eingehende Verbindungen entgegenzunehmen und mit den Herrschaften da draußen HTTP zu labern. Alles andere dahinter sind Handler - seien es einkompilierte, in Programmbibliotheken gegliederte oder über Schnittstellen angesprochene.

Gruß aus Berlin!
eddi