Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is Apache executing .php.html files as PHP?

Tags:

html

php

apache

I have an odd problem...I'm using a documentation generator which generates a lot of output like docs/foo.php.html. It's XHTML, and thus contains <?xml...> tags at the beginning of file. The problem is, Apache has somehow decided to run it through the PHP interpreter, even though ".php" appears in the middle of the filename, and not at the end. This, in turn, triggers a PHP error, because it sees "<?" as the command to start executing PHP code, and immediately gets confused by the "xml..." which follows it.

How do I configure Apache to ONLY execute .php files and not .php.html files? The string "php.html" does not appear explicitly anywhere in my Apache config files. There is a line "AddHandler php5-script .php", but I don't see how that would also include ".php.html" files.

like image 850
davr Avatar asked Dec 14 '22 06:12

davr


2 Answers

The problem seems to be in mod_mime.

Quote from the Apache mod_mime documentation page:

If you would prefer only the last dot-separated part of the filename to be mapped to a particular piece of meta-data, then do not use the Add* directives. For example, if you wish to have the file foo.html.cgi processed as a CGI script, but not the file bar.cgi.html, then instead of using AddHandler cgi-script .cgi, use

<FilesMatch \.cgi$>

SetHandler cgi-script

</FilesMatch>

Also, you can google for apache mod_mime "multiple extensions"

like image 67
alexandrul Avatar answered Dec 27 '22 16:12

alexandrul


You could disable PHP's shorttags -- this is the recommended way to mix PHP and XML.

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

short_open_tag = 0
like image 36
John Millikin Avatar answered Dec 27 '22 16:12

John Millikin