为什么在使用 _include_ 包含无 PHP 文件时,包含的内容会作为响应正文发送到客户端


why would the included content send to client as response body when including a no-php file using _include_

这里有两个文件:

索引.php:

<?php
    include 'index.txt';
?>

索引.txt

Hello, Cifer.

请求索引时.php浏览器将显示"Hello,Cifer",让我感到困惑的是包含的机制,PHP 手册说了很多关于包含的事情,但没有指出包含的内容未被 <?php ?> 关闭时,包含将导致包含的内容作为响应体发送到客户端。

那么,详细包含的机制是什么?

包含文件时,将运行该文件。这就是为什么当您"include(header.php/footer.php)" 时,它会显示标题。因此,如果您包含.txt文件,文本将打印在页面上是很自然的。

当包含文件时,解析会在目标文件的开头退出 PHP 模式并进入 HTML 模式,并在结束时再次恢复。因此,目标文件中应作为 PHP 代码执行的任何代码都必须包含在有效的 PHP 开始和结束标记中。您可以使用 HTML 注释标记来避免显示包含的文件。