如何将PHP代码/文件添加到HTML(.html)文件?


97

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

<? contents ?> 

<?php contents ?> 

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


2
您将不得不更改您的服务器(我假设是Apache)以将html文件作为php服务,但是为什么要扩展名是html而不是php?
爆炸药2012年


@ExplosionPills我已经使用IIS v7做到了!有可能!
2012年

@Death我并不是要暗示只能使用apache来完成,我只是假设他正在使用apache。
爆炸药2012年

1
多么可怕的主意。使用重定向保存您的SEO。将.html用于HTML,将.php用于PHP。
外星科技

Answers:


142

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

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

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


15
虽然这是对的,但我认为一个更重要的问题是为什么要这样做?此外,.htaccess如果可以的话,他应该更新服务器配置,而不要使用。
爆炸药2012年

10
我已经在很多场合这样做,以掩盖我正在使用PHP(除了其他功能)的事实
nickb

3
@nickb-通过晦涩难懂的安全性吗?
内森·朗

2
@NathanLong w3.org/TR/cooluris具体来说,“将特定于实现的特定内容(如.php和.asp)保留在URI中,您以后可能需要更改技术。” 在第4.5节中。
埃里克·芬恩

4
@EricFinn-这是一个很好的指导原则。但是,使服务器将.html文件作为PHP处理是不必要的,甚至没有帮助。您希望用户访问example.com/foo。无论服务器上的文件名如何,都可以使用该URL来提供PHP内容。如果用户已经添加了foo.html书签,则仍然可以在foo.php不重命名文件的情况下提供服务。
内森·朗

20

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

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

RewriteRule ^([^.]+)\.html$ $1.php [L]

如果我使用PHP + HTML怎么办?我应该使用哪种格式?我很困惑 我的页面上有基于PHP的简短代码,HTML中有很多代码。所以我要做的是制作一个HTML文件。这是个坏习惯吗?

3
格式应为.php,因为.html文件旨在仅包含HTML代码。
大卫·莫拉莱斯

15

为了在.html文件中使用php,必须在HTTP服务器的配置文件中将它们与PHP处理器关联。在Apache中,如下所示:

AddHandler application/x-httpd-php .html

您愿意评论AddHandler和之间的区别AddType吗?谢谢。
PatrickT

1
@PatrickT比较的最简单方法是AddHandler是“输入”映射-将传入的文件扩展名映射到处理程序。AddType修改输出的MIME类型标头。看到这里注:httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype
克里斯Trahey

13

您可以像其他人所说的那样修改.htaccess,但是最快的解决方案是将文件扩展名重命名为.php。


您也可以尝试.phtml
Floggedhorse,

9

添加此行

AddHandler application/x-httpd-php .html

httpd.conf文件为你想要做什么。但是请记住,如果执行此操作,则您的Web服务器将非常慢,因为它将解析甚至不包含php代码的静态代码。因此,更好的方法是使文件扩展名为.phtml而不是.html


5
请记住,请勿将您的整个答案写成粗体。
大卫·莫拉莱斯

7

为了使.html文件也被解析,您需要在服务器配置中设置适当的处理程序。

对于Apache httpd 2.X,这是以下行

AddHandler application/x-httpd-php .html

有关特定服务器安装的信息,请参见PHP文档


6

默认情况下,您不能在HTML页面中使用PHP。

为此,请使用以下命令修改您的.htacccess文件:

AddType application/x-httpd-php .html

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服务。


很实用。
量化

4

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

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

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


1
感谢您考虑那些甚至不知道如何创建.htaccess文件的人。
量化

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
}

0

现代修订:现在,您还需要通过更改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'注释为EG:从< -NB进行更改:请注意";"-默认情况下此行实际上已禁用-并且您不需要所有废话扩展名,实际上它们是可能很危险..将其更改为'security.limit_extensions = .php .htm'<-注意,现在已删除分号。然后重新启动apache /(或nginx)并重新启动php-fpm# service php-fpm restart # service httpd restart


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.