2008-10-10 6 views
5

Ich habe ein seltsames Problem ... Ich benutze einen Dokumentationsgenerator, der viele Ausgaben wie docs/foo.php.html erzeugt. Es ist XHTML und enthält daher <?xml...> Tags am Anfang der Datei. Das Problem ist, Apache hat sich irgendwie entschieden, es über den PHP-Interpreter auszuführen, obwohl ".php" in der Mitte des Dateinamens und nicht am Ende erscheint. Dies wiederum löst einen PHP-Fehler aus, weil er "<?" als den Befehl zum Starten von PHP-Code sieht und sofort von dem folgenden "xml..." verwirrt wird.Warum führt Apache .php.html Dateien als PHP aus?

Wie konfiguriere ich Apache, um .php-Dateien NUR auszuführen, und nicht .php.html-Dateien? Der String "php.html" taucht nirgends explizit in meinen Apache-Konfigurationsdateien auf. Es gibt eine Zeile "AddHandler php5-script .php", aber ich sehe nicht, wie das auch ".php.html" Dateien beinhalten würde.

+2

Es ist unmöglich, diese so weit google, wie ich sagen kann, , da google die puktation ignoriert. ".php.html Problem" etc ist das gleiche wie die Suche nach "PHP HTML-Problem", die Zillionen von Treffern gibt nicht mit meinem Problem. – davr

Antwort

11

Das Problem scheint in mod_mime zu sein.

Zitat aus der Apache mod_mime Dokumentationsseite:

Wenn Sie nur die letzte Punkt getrennten Teil des Dateinamens lieber auf ein bestimmtes Stück von Meta-Daten zugeordnet werden, dann verwenden Sie nicht das Hinzufügen * Direktiven Zum Beispiel, wenn Sie die Datei foo.html.cgi als CGI-Skript verarbeitet haben wollen, aber nicht die Datei bar.cgi.html, dann anstelle AddHandler cgi-script .cgi zu verwenden, verwenden

<FilesMatch \.cgi$>

SetHandler cgi-script

</FilesMatch>

auch können Sie auf google für apache mod_mime "multiple extensions"

+1

Das reparierte es, danke! Wahrscheinlich wäre ideal, wenn ich nur kurze Tags beseitigen könnte, aber In diesem Fall kann ich das nicht tun – davr

+1

Wow, ich hatte keine Ahnung, dass Apache das gemacht hat - sicherlich könnte es ein großes Sicherheitsproblem sein (wenn du das nicht wusstest und etwas wie das Benennen der Datei filename.php.txt getan hast) würde verhindern, dass sie interp werden reted). – thomasrutter

3

Sie können die Short-Tags von PHP deaktivieren - dies ist die empfohlene Methode zum Mischen von PHP und XML.

http://us.php.net/ini.core

short_open_tag = 0 
+0

Was er gesagt hat. Achten Sie jedoch darauf, Ihren Code zu überprüfen. – analytik

+0

Leider denke ich, es gibt eine Handvoll Orte, die Dinge wie verwenden, die kurze Tags benötigen :( – davr

+0

Ja .. aber. Wenn Sie das tun, werden die XML-Dateien funktionieren, aber sie werden viel langsamer serviert als sie sein sollten , weil sie den PHP-Interpreter passieren müssen (der auch alle Standard-PHP-No-Cache-Header hinzufügt). Kein guter Plan. – TRiG

-1

werden als PHP analysiert werden HTML-Dateien aufgelistet erlaubt als? Ich habe gesehen, dass einige freigegebene Hosts .html-Dateien als gültige PHP-Erweiterung verwenden, die auch Ihre .php.html-Dateien abfangen können.

+0

Das dachte ich zuerst, aber wenn ich eine Datei 'test.html' mache, PHP-Code wird nicht darin ausgeführt. Wenn ich eine Datei 'test.php.html' mache, wird PHP-Code darin ausgeführt. – davr

Verwandte Themen