XAMPP - PHP 不在虚拟主机上解析

Posted

技术标签:

【中文标题】XAMPP - PHP 不在虚拟主机上解析【英文标题】:XAMPP - PHP not parsing on virtualhost 【发布时间】:2012-09-14 12:21:07 【问题描述】:

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

这是我在/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 文档中解析?

【问题讨论】:

【参考方案1】:

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

AddHandler php-script .html

那么 Apache 就会知道您想让 PHP 处理带有 html 扩展名的文件的内容。

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

【讨论】:

哇,真快。谢谢@肖恩。虽然我不得不稍微修改一下。所以在/opt/lampp/htdocs/dev 我创建了一个.htaccess 文件并将其放入:AddHandler php5-script .html @ТомицаКораћ - 这也可以 - 我想它可以添加到您的 .conf 文件中的 VirtualHost 部分 - 但是 .htaccess 也可以工作:-) 我明白了,只是我觉得我在服务器设置方面仍然太新,我正在尝试在每个项目的基础上尽可能多地做 :) 非常感谢你的帮助.

以上是关于XAMPP - PHP 不在虚拟主机上解析的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac 上的 XAMPP 上设置虚拟主机

在 Mac 上的 XAMPP 上设置虚拟主机

如何在Mac上的PHP中从Xampp本地主机发送邮件?

来自本地主机的 XAMPP 和 PHP 邮件

无法在我的本地主机 (XAMPP) 上安装 Magento 2

为啥我不能在我的 XAMPP 上为这个 PHP 网站设置虚拟主机?