Clemens: *.php.inc vs. *.inc / Apache

Hallo!

Weiß zufällig jemand, wie man dem Apache beibringt, dass er *.php.inc-Dateien _nicht_ interpretieren soll?

Ich hatte auf einem älteren Apache-Server Dateien hinterlegt, die per @fopen bzw. include() von einem anderen Server (!!) eingelesen werden (das Sicherheitsproblem ist mir bewußt). Mit der alten Apache-Konfiguration ging das. Nun hat mein Kollege den Apache upgedatet, was zu Problemen führt. *.inc-Dateien werden weiterhin nicht interpretiert und so wie sie sind ausgeliefert, *.php.inc-Dateien werden aber interpretiert, was ich nicht möchte.

Ich denke es liegt an
AddType application/x-httpd-php .php

oder einer neueren Sicherheitseinstellung, wer weiß mehr?

Clemens

  1. Weiß zufällig jemand, wie man dem Apache beibringt, dass er *.php.inc-Dateien _nicht_ interpretieren soll?

    Ich denke es liegt an
    AddType application/x-httpd-php .php

    Exakt. Der Apache wertet alle Dateiendungen aus, da mit den Endungen neben MIME-Typen auch Sprachen, Zeichensätze und Handler bestimmt werden können. Die Endung .html.de zeigt zum Beispiel eine HTML-Datei in Deutsch an.
    Da in Deinem Fall .inc kein spezieller MIME-Typ zugewiesen ist, gilt logischerweise der von .php, was wiederum dazu führt, daß die Datei vom PHP-Interpreter erkannt und ausgeführt wird.

    Ihr könnt das Problem umgehen, indem Ihr .inc einen Typ (sinnvollerweise text/plain) zuweist. Normalerweise ist die Reihenfolge der Endungen egal, geben jedoch zwei Endungen gleiche Daten an, gilt die Endung, die am weitesten rechts steht. Hier würde also links .php mit application/x-httpd-php stehen, rechts .inc mit text/plain -> rechts hat Priorität, der Typ der Datei wird zu text/plain, der PHP-Interpreter fasst die Datei nicht an.

    Weitere Informationen findet Ihr in der Apache-Anleitung, Kapitel mod_mime.

    Gruß,
      soenk.e

    1. Exakt. Der Apache wertet alle Dateiendungen aus, da mit den Endungen neben MIME-Typen auch Sprachen, Zeichensätze und Handler bestimmt werden können. Die Endung .html.de zeigt zum Beispiel eine HTML-Datei in Deutsch an.
      Da in Deinem Fall .inc kein spezieller MIME-Typ zugewiesen ist, gilt logischerweise der von .php, was wiederum dazu führt, daß die Datei vom PHP-Interpreter erkannt und ausgeführt wird.

      Ihr könnt das Problem umgehen, indem Ihr .inc einen Typ (sinnvollerweise text/plain) zuweist. Normalerweise ist die Reihenfolge der Endungen egal, geben jedoch zwei Endungen gleiche Daten an, gilt die Endung, die am weitesten rechts steht. Hier würde also links .php mit application/x-httpd-php stehen, rechts .inc mit text/plain -> rechts hat Priorität, der Typ der Datei wird zu text/plain, der PHP-Interpreter fasst die Datei nicht an.

      Weitere Informationen findet Ihr in der Apache-Anleitung, Kapitel mod_mime.

      Hi Sönke!

      Danke für den Hinweis! Mit einer .htaccess und dem Eintrag AddType text/html .inc funktioniert das ganze jetzt, alternativ dazu auch in der httpd.conf.

      Clemens