代码之家  ›  专栏  ›  技术社区  ›  davr

为什么Apache将.php.html文件作为php执行?

  •  4
  • davr  · 技术社区  · 17 年前

    我有一个奇怪的问题……我使用的是一个文档生成器,它可以生成很多输出,比如docs/foo.php.html。它是xhtml,因此包含 <?xml...> 文件开头的标记。问题是,尽管在文件名中间出现了“.php”,但Apache还是决定通过php解释器运行它,而不是在最后。这反过来会触发一个PHP错误,因为它看到 <? 作为开始执行PHP代码的命令,并立即被 xml... “然后。

    如何配置Apache以仅执行.php文件,而不执行.php.html文件?字符串“php.html”不会显式出现在apache配置文件的任何位置。有一条线” AddHandler php5-script .php “,但我看不出它还将如何包含“.php.html”文件。

    3 回复  |  直到 17 年前
        1
  •  11
  •   alexandrul    17 年前

    问题似乎出在 mod_mime .

    引自Apache mod_mime文档页面:

    如果只希望文件名的最后一个点分隔部分映射到特定的元数据,那么不要使用add*指令。例如,如果希望将文件foo.html.cgi作为cgi脚本处理,而不是将文件bar.cgi.html处理,则不要使用addhandler cgi script.cgi,而是使用

    <FilesMatch \.cgi$>

    SetHandler cgi-script

    </FilesMatch>

    另外,你也可以用谷歌搜索 apache mod_mime "multiple extensions"

        2
  •  3
  •   John Millikin    17 年前

    您可以禁用php的短标记——这是混合php和xml的推荐方法。

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

    short_open_tag = 0
    
        3
  •  -1
  •   dragonmantank    17 年前

    是否允许将.html文件作为php进行分析?我见过一些共享主机将.html文件设置为可用作有效的php扩展名,这也可能会捕获.php.html文件。