在HTML文件中PHP脚本无法正常工作

13

我是PHP的新手。我安装了XAMPP并运行了Apache。我在XAMPP的htdocs中创建了helloworld.php,并且PHP已经在我的浏览器中显示出来了。我的问题是,为什么我的HTML文件中的PHP脚本没有在浏览器中显示?我从未单独安装过PHP。我是否也应该安装它?它会与XAMPP冲突吗?我的代码如下。任何帮助将不胜感激。先谢谢:

<html>
    <body>
        <?php
            echo "Hello PHP World";
        ?>
    </body>
</html>

你打算发布更多的代码吗? - Andy E
1
这个文件在 Apache 服务器的 "www" 目录中吗?(我相信它是 www,也可能是 www-root)。如果是的话,你是这样打开它的吗:http://localhost/myFile.php? - Cipi
1
当我在Windows上使用XAMPP时,所有的Web内容都必须放在一个名为htdocs的目录中。 - TRiG
1
好的,我只是想指出文件必须在一个特殊的文件夹中,这个文件夹是由服务器托管的网站的根文件夹...而且你必须以那种方式打开它,而不是像可执行文件(双击)。 - Cipi
感谢Andy、Tatu、TRiG和Cipi的回复。 @Andy,这就是我想发布的所有代码。这是我在HTML中编写的第一个PHP脚本,但它无法工作。 @Tatu,输出结果是一个空白浏览器。 @Cipi,我将helloworld.html文件放在htdocs文件夹中(即xampp/htdocs),并尝试了两种方法:在浏览器中输入http://localhost/helloworld.html并按回车键,以及双击文件图标。在两种情况下,我都得到了一个空白的浏览器。 @TRiG,我最初尝试从桌面运行我的PHP脚本/HTML文件,但没有成功,所以我将其放入了htdocs文件夹中(我认为这是正确的文件夹)。 - Anthony
6个回答

20

我猜您正在尝试在 .html 文件中使用 php?
尝试添加 .htaccess 文件或者修改 apache 配置文件并使用以下代码:

AddHandler application/x-httpd-php .html

是的,我正在尝试在 .html 文件中使用 php。我正在遵循 w3schools 给出的示例(请参见下面的链接),并且只是假设一旦我运行了 Apache,它就可以在任何地方正常工作:http://www.w3schools.com/php/php_syntax.asp关于 .htaccess 文件或更改 Apache 配置,我需要进行研究。 - Anthony
我的错误,w3schools确实提到了你必须有一个.php扩展名(而不是.html),否则它将无法工作。 - Anthony

16

XAMPP已经包含了PHP,但是除非你将脚本文件名以.php结尾,否则它很可能不会被PHP引擎处理。


是的,但你不需要把脚本放在XAMPP的www文件夹中吗?还是我错了...? - Cipi
@Cipi:当然。但是除非他们证明了不同的情况,否则我更愿意给提问者一些怀疑的余地。 - Ignacio Vazquez-Abrams
不仅是不太可能,而且它只配置了 .php(也许还有 .php5,我忘了)的默认设置。纯粹的 .html(或 .htm)将直接由 Apache 返回。 - Paolo
哦,好的,我以为我可以把php脚本放在html文件中,然后它就可以在我的硬盘上任何地方运行。没有意识到我必须把它放在一个特殊的位置,并且必须有一个.php扩展名。好的,非常感谢。我通过将扩展名从.html更改为.php使其工作了。但是,如果我只是点击文件,Windows不知道创建它的程序?这是否意味着我还需要在XAMPP旁安装PHP? - Anthony
现在,您需要通过浏览器访问它,方法是打开 http://localhost/ 或其他什么的。 - Ignacio Vazquez-Abrams

13
停止Apache服务,然后在c:\xampp\apache\conf\httpd.conf文件的部分添加一个更改...
AddType application/x-httpd-php .html .htm  

重新启动apache!

这似乎是当前win 32位xampp发行版中的一个非常明显的“特性”。


为什么我看不到apache文件夹? 更新:找到了。我的etc文件夹里有httpd.conf文件。但是它不允许你直接编辑,所以你需要在编辑之前使用“sudo su”命令。 顺便说一句,谢谢! - Dao Lam

7
您应该在HTTP配置中添加MIME类型,例如在httpd.conf中的Apache条目。
<IfModule mime_module>
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #
    TypesConfig "conf/mime.types"
   .......
    AddType application/x-httpd-php .html .htm
   AddType text/html .shtml

    AddOutputFilter INCLUDES .shtml
</IfModule>

这是最有用的答案,尽管有点简洁。XAMPP默认情况下不会处理.html或.htm文件中的PHP代码。从这个答案中添加x-httpd-php行,它就能正常工作了。 - Ranald Fong

4

Apache的php模块将自己注册为mime类型application/x-httpd-php的处理程序。而配置文件apache\conf\extra\httpd-xampp.conf包含以下几行:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

这段内容告诉Apache服务器,所有文件扩展名为.php的文件都要由application/x-httpd-php处理程序处理。
如果你想让.php模块也处理.html文件,你需要添加类似于.html扩展名的代码。还有其他方法可以告诉Apache服务器哪个扩展名映射到哪个mime类型/处理程序。但是FilesMatch/SetHandler就可以了。
如果你只想在一个目录中启用这个“特性”,你可以使用.htaccess文件来更改该目录(及其子目录)的配置。

感谢您的回复,VolkerK。 现在脚本已经可以工作了,因为我将.html扩展名更改为.php。但是,如果我单击文件helloworld.php,Windows不知道创建它的程序(即使我正在运行Apache)。我有点困惑,我是否还应该安装Windows版的PHP? - Anthony
1
如果我点击文件 - 即在Windows资源管理器中双击?您的Apache和Windows资源管理器没有连接,它们“不知道”彼此。您的Apache处理HTTP请求,例如您的浏览器发送的请求。 - VolkerK

2

过度杀伤力太强了。所有这些建议都让我走了错误的道路,浪费了我5个小时。开个玩笑,但我确实阅读了很多谷歌搜索结果,每个建议都只是增加更多的错误答案。

事实上,答案非常简单,你会想要敲击自己的脑袋:只需将文件扩展名从“.html”更改为“.php”即可!请记住,你可以完全使用PHP构建网页,所有基于JavaScript构建的JavaScript和其他东西(如JQuery、bootstrap等)都可以正常工作。

以下是一个简单的证明示例:

<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Blank Web Page</title>

    <link rel="stylesheet" type="text/css" href="css/css.css">

</head>

<body>

    <?php

    $son = 5;
    $nos =10;

    echo $son + $nos;

    ?>

    <h4>test to see if this html element can be output too!</h4>

    <script type="text/javascript" src="js/js.js"></script>

</body>

请注意,尽管我的HTML标签未显示(相信我它在那里),但我使用了您的标准HTML,并插入了Web页面内容和PHP代码。当然,结果是15,html元素h4也正确呈现。将扩展名改回“html”,您将仅获得h4元素,并发现您的PHP代码已被使用HTML的多行注释注释掉。我忘了添加这也适用于Xampp。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接