Hallo,
Ich hab in die htaccess Datei folgendes eingetragen
Addtype application/xhtml+xml .html .htm .phpNun kommt immer der korrekte MIME-Type an, allerdings werden jetzt .php Dateien nicht mehr vom PHP-Parser interpretiert, sondern kommen unverändert beim Browser an.
Das ist normal.
In der httpd.conf (Konfigurations-Datei fuer den Apache-Webserver)
steht vermutlich etwa folgendes:
AddType application/x-httpd-php .php
Damit weiss der Webserver, dass er Dateien mit der Endigung .php
durch den PHP-Parser schicken soll.
Jetzt sagst Du dem Webserver auf Verzeichnis-Ebene mit Deiner AddType Direktive
(s. oben), dass er Dateien mit den Endigungen .html, .htm und .php direkt ausliefern
soll, und zwar mit dem Content-Type application/xhtml+xml.
Somit werden diese Dateien nicht mehr durch den PHP-Parser geschickt.
[...] Nehme ich aus dem Addtype-Command .php wieder raus, funzt der PHP-Parser wieder, aber der falsche MIME-Type kommt wieder an -> der XML-Parser läuft nicht.
Auch das ist fuer mich voellig logisch. Ich schrieb doch schon in [pref:t=77822&m=450035]:
PHP-Skripten schicken normalerweise text/html,
es sei denn, Du schickst im Skript ausdruecklich
einen anderen Header.
Welchen Content-Type ein PHP-Skript normalerweise schickt, haengt
von der Einstellung der Konfigurations-Option default_mimetype ab.
Deren Standard-Wert ist SAPI_DEFAULT_MIMETYPE.
Ich vermutet, dass das bedeutet, dass PHP sich beim Webserver
nach dem Standard-MIME-Type "erkundigt" und diesen uebernimmt.
phpinfo() zeigt Dir an, welchen Wert default_mimetype bei Dir hat.
default_mimetype ist aenderbar in PHP_INI_ALL, also z.B. auch
in der .htaccess oder im Skript selbst per ini_set().
http://www.php.net/manual/de/function.ini-set.php
Um fuer alle PHP-Skripts eines Verzeichnisses zu bewirken,
dass deren Ausgabe mit dem Content-Type application/xhtml+xml
ausgeliefert wird, kannst Du es mit folgendem Eintrag in der
.htaccess versuchen (nicht ausprobiert, ohne Gewaehr!):
php_value default_mimetype "application/xhtml+xml"
oder allenfalls
<IfModule mod_php4.c> php_value default_mimetype "application/xhtml+xml" </IfModule>
Siehe auch:
http://www.dclp-faq.de/q/q-konfiguration-laufzeit.html
Wenn Du einfach willst, dass die Ausgabe eines einzelnen PHP-Skripts
mit dem Content-Type application/xhtml+xml ausgeliefert wird, kannst Du
das am einfachsten im Skript selbst veranlassen:
header("Content-type: application/xhtml+xml");
http://www.php.net/manual/de/function.header.php
Gruesse,
Thomas