de.comp.lang.php.* FAQ

4.7. Apache: Kann ich PHP auch auf .html-Dateien anwenden?

Keywords: phps | html | Syntax | Highlighting | Parser | Apache | Datei | Endung

Antwort von Johannes Frömter

Prinzipiell kann man Dateien mit beliebigen Endungen durch PHP verarbeiten lassen, also auch die Endung .html. Normalerweise braucht man hierzu Zugriff auf die Apache-Konfigurations-Datei httpd.conf (wenn der Provider es nicht unterbunden hat, reicht aber auch ein Eintrag in einer .htaccess-Datei, die man einfach in sein Home-Directory stellt). Auf diese Weise lassen sich auch prima in PHP3 geschriebene Anwendungen bei einem Provider betreiben, der nur noch PHP4 anbietet (die Kompatibilität beträgt praktisch 100%, siehe Anhang B. des PHP Manuals).

Je nachdem, ob PHP in der Modul- oder der CGI-Version zum Einsatz kommt, unterscheiden sich die Konfigurationsanweisungen. Bei PHP4 ist das Modul die häufigere Art, hier sieht die Zeile meist so aus:

AddType application/x-httpd-php .php .php4 .html

Mehrere Dateiendungen schreibt man einfach durch Leerzeichen getrennt hintereinander. Beim Massenhoster 1&1 (PureTec, S+P, sowie deren Reseller) ist bei AddType eine etwas andere Syntax notwendig: AddType x-mapp-php4 .php .html

Diese Konfigurationsanweisungen können in der httpd.conf entweder in Section 2 ('Main' server configuration) stehen, in <VirtualHost>-Containern (Section 3), wo sie nur für den entsprechenden Domain-/Hostnamen gelten, oder in <Directory>-Containern, wo sie nur für ein bestimmtes Verzeichnis und dessen Unterverzeichnisse gelten. Auch in .htaccess-Dateien sind sie möglich, sie gelten dann ebenfalls für nur für ein Verzeichnis bzw. dessen Unterverzeichnisse.

Betreibt man PHP nicht als Webserver-Modul, sondern als CGI (z.B. PHP3 parallel zu PHP4), sieht der Eintrag folgendermaßen aus:

AddType application/x-httpd-php3 .php3 .html
Action  application/x-httpd-php3 /cgi-bin/php

// Für Windows
ScriptAlias /php3/ "/path-to-php-dir/"
AddType application/x-httpd-php3 .php3
Action  application/x-httpd-php3 "/php3/php.exe"

Solange die Modulversion von PHP verwendet wird und in den verarbeiteten Dateien keine PHP PIs (SGML Processing Instructions, die PHP einschalten: <?php usw.) vorkommen, ist der Mehraufwand in CPU-Belastung und Zeitverbrauch kaum meßbar. Bei der CGI-Version entspricht der Mehraufwand dem Ausliefern jeder HTML-Seite durch ein CGI-Programm. Das kann beträchtlich sein.

Wichtig: Bei Änderungen an der httpd.conf ist ein Neustart des Apache notwendig (Linux: apachectl restart), um sie wirksam werden zu lassen.

Eine besondere Funktion kann man der Dateiendung .phps zukommen lassen, PHP stellt dann den Quellcode der Datei mit farbig hervorgehobenen Tags dar:

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

Man kann seine PHP-Dateien kopieren und als .phps speichern, dies hat jedoch Nachteile: es wird der doppelte Speicherplatz verbraucht, und bei Änderungen an der Datei muss die Kopie auch aktualisiert werden. Unter Unix/Linux kann man einen symbolischen Link auf die Datei anlegen, um dies zu vermeiden (ln -s file.php file.phps). Allerdings muss dies für jede Datei getan werden; will man alle Dateien mit der Endung .php auch als .phps abrufen können, bastelt man mit dem Apache-Modul mod_rewrite (oder auch mod_alias) eine Regel, die diese Requests abfängt und an ein PHP-Skript weiterleitet. Im Manual bei der Funktion highlight_file() findet man ein Beispiel, wie man Source Highlighting auch auf recht elegante Art mittels ForceType erreichen kann.

Valid HTML 4.01! Valid CSS!

4.7. Apache: Kann ich PHP auch auf .html-Dateien anwenden?
http://www.php-faq.de/q/q-apache-parsen.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team