1

我已经为我的本地机器设置了一个虚拟主机。

这是我的/etc/hosts文件中的内容:

127.0.0.1   localhost local.dev
127.0.1.1   tomica-ubuntu

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

这是我的虚拟主机的配置/opt/lampp/etc/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/opt/lampp/htdocs/dev"
    ServerName local.dev
</VirtualHost>

在我的/opt/lampp/htdocs/dev/index.html我有这个:

<html>
<body>
    <p>HTML</p>
    <?php echo 'PHP' ?>
</body>
</html>

但是当我http://local.dev在浏览器中打开时,我只看到:

HTML

但是,如果我打开文档源,我可以看到:

<html>
<body>
    <p>HTML</p>
    <?php echo 'PHP' ?>
</body>
</html>

如果我检查页面的 DOM,有:

<html>
<body>
    <p>HTML</p>
    <!--<?php echo 'PHP' ?>-->
</body>
</html>

另外,如果我重命名/opt/lampp/htdocs/dev/index.html一切/opt/lampp/htdocs/dev/index.php似乎没问题。

为什么我的 PHP 代码没有在 .html 文档中解析?

4

1 回答 1

1

默认情况下mod_php不会告诉 Apache 让它处理带有.html扩展名的文档。如果您使用AddHandler指令更改处理程序类型:

AddHandler php-script .html

然后 Apache 就会知道你想让 PHP 处理带有html扩展名的文件的内容。

默认情况下不启用此功能的原因是因为通过 PHP 解释器运行文档会产生成本(CPU、内存使用量、最终用户时间)。浪费时间是没有意义的——所以在 mod_php 的默认设置中,HTML 文件(通常是静态事务)不会通过 PHP 解释器。

于 2012-09-22T06:32:45.713 回答