101

我不能在我的 HTML 页面中使用 PHP。例如,index.html。我试过同时使用:

<? contents ?> 

<?php contents ?> 

这些都不起作用。我的服务器提供 PHP,当我使用.php扩展时,它可以正常工作。这是一个问题还是我必须更改偏好php.ini

4

12 回答 12

151

您不能在 .html 文件中运行 PHP,因为除非您告诉它,否则服务器不会将其识别为有效的 PHP 扩展。为此,您需要在您的 Web 根目录中创建一个 .htaccess 文件并将这一行添加到其中:

AddType application/x-httpd-php .htm .html

这将告诉 Apache 将具有 .htm 或 .html 文件扩展名的文件作为 PHP 文件处理。

于 2012-07-03T13:47:12.530 回答
20

我认为将 PHP 写入 .html 文件是令人困惑和反自然的。为什么要这么做??

无论如何,如果您想要执行 PHP 文件并在地址栏中将它们显示为 .html,最简单的解决方案是正常使用 .php,并在 .htaccess 中编写如下规则:

RewriteRule ^([^.]+)\.html$ $1.php [L]
于 2012-07-03T13:56:14.020 回答
15

In order to use php in .html files, you must associate them with your PHP processor in your HTTP server's config file. In Apache, that looks like this:

AddHandler application/x-httpd-php .html
于 2012-07-03T13:47:58.367 回答
13

You can modify .htaccess like others said, but the fastest solution is to rename the file extension to .php

于 2012-07-03T14:00:10.863 回答
10

添加这一行

AddHandler application/x-httpd-php .html

提交httpd.conf你想做的事。但是请记住,如果您这样做,那么您的 Web 服务器会非常慢,因为它甚至会解析不包含 php 代码的静态代码。所以更好的方法是制作文件扩展名.phtml而不是.html.

于 2012-07-04T20:43:31.113 回答
7

For having .html files parsed as well, you need to set the appropriate handler in your server config.

For Apache httpd 2.X this is the following line

AddHandler application/x-httpd-php .html

See the PHP docu for information on your specific server installation.

于 2012-07-03T13:49:01.903 回答
6

By default you can't use PHP in HTML pages.

To do that, modify your .htacccess file with the following:

AddType application/x-httpd-php .html
于 2012-07-03T13:48:06.683 回答
5

使用记事本创建一个空文件并将其命名为 .htaccess ,然后将该文件复制到您的项目目录中并添加此行并保存。

AddType application/x-httpd-php .htm .html

否则使用.php保存.html文件,因为php可以支持html,并将其保存在computer/var/www/html路径(linux)

于 2018-12-15T14:44:39.280 回答
4

如果您在一个 html 文件中只有 php 代码,但有多个仅包含 html 代码的其他文件,您可以将以下内容添加到您的 .htaccess 文件中,这样它只会将该特定文件作为 php 提供。

<Files yourpage.html>
AddType application/x-httpd-php .html 
//you may need to use x-httpd-php5 if you are using php 5 or higher
</Files>

这将使 PHP 只能在“yourpage.html”文件上执行,而不是在所有 html 页面上执行,这将防止整个服务器变慢。

至于为什么有人可能想通过 html 文件提供 php,我使用 google 电子表格中的 IMPORTHTML 函数从必须用 php 解析的外部 url 导入 JSON 数据以清理它并构建一个 html 表。到目前为止,我还没有找到任何将 .php 文件导入 google 电子表格的方法,因此必须将其保存为 .html 文件才能使该功能正常工作。对于特定用途,能够通过 .html 文件提供 php 是必要的。

于 2017-02-15T15:36:42.643 回答
2

现代修订:您现在还需要通过更改 php-fpm 中鲜为人知的“security.limit_extensions”来修复它。您可能已经知道将 apache 更改为 AddHandler/AddType 的有据可查的机制,我不会在这里讨论。

  1. 您必须找出 php-fpm/conf 在您的设置中的位置。我是这样做的

    # grep -rnw '/etc/' -e 'security.limit_extensions'

  2. 我把这个拿回来了

    '/etc/php-fpm.d/www.conf:387:;security.limit_extensions = .php .php3 .php4 .php5 .php7'

  3. 转到此文件,编辑它并确保您意识到它已被注释掉例如:将其';security.limit_extensions = .php .php3 .php4 .php5 .php7'更改";"为可能很危险..将其更改为'security.limit_extensions = .php .htm'<- 注意分号现在已被删除。然后重新启动 apache/(或 nginx)并重新启动 php-fpm# service php-fpm restart # service httpd restart

于 2020-08-13T10:40:49.020 回答
0

AJAX 也是一种可能。实际上,您需要来自 php 页面的数据。一旦你有了数据,你就可以在javascript中格式化并显示。

var xmlhttp = new XMLHttpRequest();
var url = "risingStars.php";

xmlhttp.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
        getDbData(this.responseText);
    }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();


function getDbData(response) {

//do whatever you want with respone
}
于 2020-04-04T18:15:32.437 回答
-2

要结合 HTML 和 PHP,您可以使用 .phtml 文件。

于 2015-10-14T16:56:27.030 回答