Umgang mit Dateien nach HTTP-Server

561
Mulligan

Wenn ich verstehe, dass der Server (zB Apache) eine Anfrage erhält, sucht er nach Dateinamenerweiterung, um den zugehörigen Mime-Typ zu finden. Dann wird nach dem Handler gesucht, der mit diesem Minentyp arbeitet (ich behaupte, dass er PHP-Unterstützung für Apache hinzufügt). Und hier sind meine Fragen:

  1. Ist die obige Aussage richtig?
  2. Wenn ja, wenn es keinen Handler für einen bestimmten Mime-Typ gibt, bedeutet dies das Standardverhalten - das heißt, Sie senden einfach eine Datei an den Client.
  3. Wenn es überhaupt keine explizite Erweiterung gibt - Mime-Typ-Zuordnung definiert (z. B. .html), wird die Standardaktion wieder nur an den Client gesendet?
  4. Gemäß einigen Quellen, um Apache um PHP-Unterstützung zu erweitern, müssen wir die addTypeDirektive verwenden: AddType application/x-httpd-php .phpwährend andere die addHandlerDirektive verwenden: Die AddHandler application/x-httpd-php .phpmeiner Meinung nach die einzig richtige, da addTypesie nur für statische Dokumente verwendet werden sollte. Warum ist die addTypeVersion noch korrekt?
  5. Ich habe irgendwo solche Zeilen gefunden:

AddType text / html .php .phps
AddHandler-Anwendung / x-httpd-php .php
AddHandler-Anwendung / x-httpd-php-source .phps

Bedeutet dies, dass die AddType-Direktive verwendet wird, wenn der Server den Handler für den Mime-Typ application / x-httpd-php nicht finden kann und die Aktion nur darin besteht, eine .php-Quelldatei mit text / html mime- an den Client zu senden. als Antwort eingeben

0
Ich habe deine Bearbeitung zurückgenommen, bitte mach das nicht. Wenn Sie die falschen Antworten erhalten, * verbessern * Sie Ihre Frage und deren Titel. Arjan vor 8 Jahren 0
Bitte beachten Sie, dass diese Seite hauptsächlich für konkrete Probleme gedacht ist, die Lösungen erfordern. Sachen wie "Ich habe versucht, PHP auf meinem Apache zu installieren, aber es funktioniert nicht!". Alles was ich in dieser Frage sehe, ist eher "philosophisch". Es ist auch völlig spezifisch für Apache. Daniel B vor 8 Jahren 0

1 Antwort auf die Frage

3
Seth
  1. Ja und nein. Es gibt immer einen Typ und einen Handler. Wenn Sie sich die Dokumentation für Handler ansehen, heißt es:

    Im Allgemeinen haben Dateien implizite Handler, basierend auf dem Dateityp. Normalerweise werden alle Dateien einfach vom Server bereitgestellt, aber bestimmte Dateitypen werden separat "behandelt".

Es ist daher wahrscheinlich, dass Sie Handler getrennt vom Typ konfigurieren können. Wie in meiner ursprünglichen Antwort sieht es so aus, als würde es die PHP-INSTALL-Datei inzwischen vorschlagen.

  1. Wenn Sie sich den Link oben ansehen, wird der Standard-Handler aufgerufen, der die Datei wahrscheinlich nur sendet, da sie für einen Webserver am häufigsten verwendet wird.

  2. Ich verstehe nicht, was du damit meinst. Wenn eine Datei eine Erweiterung hat, dieser Erweiterung jedoch kein Mime-Typ zugeordnet ist, wird der Standard-Mime-Typ verwendet. Wenn Sie sich den Beitrag ansehen Wie kann ich alle nicht erkannten Dateitypen in Apache2 als Binärdateien erstellen? Der Standard-MIME-Typ sollte laut Dokumentation zum Kernmodul text / plain sein .

  3. / Ursprüngliche Antwort: Wenn Sie nach einer Quelle suchen, wie Sie PHP-Unterstützung für Apache hinzufügen können, lesen Sie einfach die INSTALL-Datei, die im PHP-Download enthalten ist.

Entsprechend würden Sie für Apache 2.x mit PHP 5.6.25 verwenden SetHandler.

Nun, wenn Sie Ihr Beispiel betrachten:

AddType text / html .php .phps
AddHandler-Anwendung / x-httpd-php .php
AddHandler-Anwendung / x-httpd-php-source .phps

Sie sind richtig, dass gemäß der Apache-Dokumentation AddTypefür statische Dateien verwendet werden sollte. Die Verwendung von AddHandler hingegen kann ein Sicherheitsrisiko darstellen. Zumindest wird es nicht von der INSTALL-Datei von PHP empfohlen, und es wird ausdrücklich erwähnt, dass ein reiner AddType dazu führen kann, dass Dateien ausgeführt werden, die eigentlich keine PHP-Dateien sind. Aus der INSTALL-Datei Punkt 8 für Apache 2.x:

Sagen Sie dem Apache, dass er bestimmte Erweiterungen als PHP analysiert. Lassen Sie uns zum Beispiel Apache-PHP-Dateien als Apache analysieren. Anstatt nur die Apache-AddType-Direktive zu verwenden, möchten wir verhindern, dass potenziell gefährliche Uploads und erstellte Dateien wie exploit.php.jpg als PHP ausgeführt werden. In diesem Beispiel können Sie alle Erweiterungen als PHP analysieren, indem Sie sie einfach hinzufügen. Wir werden .php zur Demonstration hinzufügen.
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>

Wenn Sie sich die Dokumentation über AddHandler/ ansehen SetHandler, wird klar, dass AddHandler und SetHandler etwas andere Zwecke erfüllen und dass der Vorschlag aus der INSTALL-Datei Sie "ermutigen" würde, Ihre eigenen Header zu senden, da sich der interne Handler für PHP-Dateien ändern würde.

  1. Nein, es bedeutet, dass der standardmäßige Mime-Typ, der an den Client gesendet wird, text / html ist, da es ziemlich wahrscheinlich ist, dass PHP-Dateien HTML-Ausgabe generieren.
Tut mir leid, aber Ihre Antwort, wenn Sie mich unbrauchbar machen. Es beantwortet keine meiner Fragen. Außerdem bringt es mir noch mehr Fragen und Verwirrung ;-( Können Sie so nett sein und versuchen, alle meine Fragen klar zu beantworten? Mulligan vor 8 Jahren 0
Kannst du so nett sein und auf meinen letzten Kommentar antworten? Mulligan vor 8 Jahren 0
Also, @Mulligan, könntest du mir sagen, ob dieser besser ist, oder mir sagen, was deine Probleme damit sind? Seth vor 8 Jahren 0