为什么相同的内容不同的文件类型会导致不同的输出


Why same content with different file type result in different output?

以下内容相同

<html>
<body>
<?php  $name="jhon"; ?>
    <table>
        <tr>
            <td>name</td>
            <td><?php echo $name;?></td>
        </tr>
    </table>
</body>
</html>

1。要将其保存为test.php, firefox中的输出如下所示:

name    jhon

2。要将其保存为test.html, firefox中的输出如下所示:

name    

为什么相同的内容不同的文件类型导致不同的输出?

如果使用html扩展保存,服务器将不会对其进行预处理,因此PHP块将不会被评估。这意味着,将不会创建包含实际名称的第二个标记。

.php的扩展告诉服务器在将文件发送给客户端之前,先检查文件并运行任何包含该文件的PHP。

因为您的web服务器配置为通过PHP解释器传递*.php文件,该解释器执行PHP文件中包含的PHP。

HTML文件在你的web服务器上不是这样配置的(尽管你可以这样配置它)。事实上,服务器认为它只是一个普通的HTML文档,并逐字返回它,而浏览器将您的PHP打开/关闭标记解释为HTML标记,它只是无法识别,也不知道该怎么做(尝试查看源代码,看看您的PHP代码是否在源代码中显示)。

您的web服务器(Apache等)只能识别和评估.php文件作为默认配置AddType application/x-httpd-php .php

为了执行任何其他脚本(说。html文件)作为PHP脚本,你必须在httpd.conf文件中添加AddType语句,如下所示(你已经重新启动你的web服务器):

AddType application/x-httpd-php .html