Почему Apache выполняет файлы .php.html как PHP? - PullRequest
4 голосов
/ 10 октября 2008

У меня странная проблема ... Я использую генератор документации, который генерирует много выходных данных, таких как docs / foo.php.html. Это XHTML, и поэтому содержит <?xml...> теги в начале файла. Проблема в том, что Apache каким-то образом решил запустить его через интерпретатор PHP, хотя «.php» появляется в середине имени файла, а не в конце. Это, в свою очередь, вызывает ошибку PHP, потому что он видит "<?" как команду, чтобы начать выполнение кода PHP, и сразу же запутывается "xml...", которая следует за ним.

Как настроить Apache ТОЛЬКО для выполнения файлов .php, а не файлов .php.html? Строка "php.html" не отображается явно нигде в моих файлах конфигурации Apache. Есть строка "AddHandler php5-script .php", но я не вижу, как это также включало бы файлы ".php.html".

Ответы [ 3 ]

11 голосов
/ 10 октября 2008

Проблема, кажется, в mod_mime .

Цитата со страницы документации Apache mod_mime:

Если вы хотите, чтобы только последняя разделенная точками часть имени файла отображалась на определенный фрагмент метаданных, не используйте директивы Add *. Например, если вы хотите, чтобы файл foo.html.cgi обрабатывался как скрипт CGI, а не файл bar.cgi.html, тогда вместо использования AddHandler cgi-script .cgi используйте

<FilesMatch \.cgi$>

SetHandler cgi-script

</FilesMatch>

Кроме того, вы можете Google для apache mod_mime "multiple extensions"

3 голосов
/ 10 октября 2008

Вы можете отключить короткие ярлыки PHP - это рекомендуемый способ смешивать PHP и XML.

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

short_open_tag = 0
0 голосов
/ 10 октября 2008

.html файлы перечислены как разрешенные для анализа как PHP? Я видел, что некоторые общие хосты устанавливают файлы .html для использования в качестве допустимого расширения PHP, которое также может перехватывать ваши файлы .php.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...