Wie wird in der Apache-Konfiguration festgelegt, was mit welchen angeforderten Dateien passieren soll? Zum Beispiel mit Dateien mit der Endung .php?

May 4th, 2008 by matthias

Korrekte Konfiguration für mod_suphp:

  1. <IfModule mod_suphp.c>
  2.   AddHandler x-httpd-php .php
  3. </IfModule>

Alternativ: korrekte Konfiguration für mod_php4:

  1. AddType application/x-httpd-php .php
  2. AddType application/x-httpd-php-source .phps

AddType bedeutet: Dateien mit der angegebenen Endung haben den angegebenen Mime-Type. AddHandler bedeutet: Dateien mit der angegebenen Endung sollen vom benannten Apache-Handler behandelt werden. Dass Apache-Handler genauso heißen wie Mime-Types ist dabei Zufall. Siehe auch httpd.apache.org/docs/handler.html . Handler werden vom Server selbst, von Modulen oder mit der Action-Direktive zur Verfügung gestellt. http://localhost/server-info zeigt nun, dass mod_suphp den Content Handler x-httpd-php zur Verfügung stellt, mod_php4 aber die Content Handler application/x-httpd-php , application/x-httpd-php-source und text/html. Es ist problemlos möglich, dass beide Module gleichzeitig geladen sind (es braucht nur entsprechende LoadModule-Zeilen in /etc/apache/modules.conf).

Mit AddHandler x-httpd-php .php wird also konfiguriert, dass mod_suphp alle .php-Dateien behandelt. Gibt es mehrere AddHandler-Direktiven für Dateien mit derselben Endung, so überschreibt die letztere alle vorigen. Es scheint, dass AddType nicht nur Dateien einem Typ zuweist, sondern gleichzeitig diesen Typ einem gleichnamigen Handler. Anders ist nicht zu erklären, wie die oben gezeigte Konfiguration für mod_php4 funktioniert. Diese implizite Handler-Zuweisung aufgrund des Dateityps ist tatsächlich der Fall. In der Apache-Dokumentation wird das so ausgedrückt: »Generally, files have implicit handlers, based on the file type. Normally, all files are simply served by the server, but certain file types are “handled” separately.« ( httpd.apache.org/docs/handler.html ).

Indem man die explizite Handler-Zuweisung mit AddHander nach der impliziten mit AddType plaziert, sollte es möglich sein, alle zu den obigen Konfigurationen gehörenden Direktiven gleichzeitig zu verwenden, derart dass trotzdem PHP-Dateien von mod_suphp behandelt werden. Die AddHandler-Direktive überschreibt dann die Zuweisung eines Handlers durch die AddType-Direktive.

Posted in Apache Webserver |

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.