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

102

我无法在HTML页面中使用PHP。 例如,index.html。 我已经尝试过使用以下两种方式:

<? contents ?> 

并且

<?php contents ?> 

这两个都不起作用。我的服务器提供了PHP,在我使用.php扩展名时,它能正常工作。这是一个问题吗?还是我需要更改php.ini中的偏好设置呢?


4
您需要更改服务器(我假设您使用的是Apache)将HTML文件作为PHP文件进行服务,但是为什么您想要使用HTML扩展名而不是PHP呢? - Explosion Pills
1
http://php.about.com/od/advancedphp/p/html_php.htm - undone
事实上,我最近更换了服务器,我的以前的服务器提供php和html,但当前的服务器没有提供,这让我很好奇。 - Hoon
@ExplosionPills,我无法像创建其他页面那样更改我的主页扩展名为“.html”。 - user5306470
1
多么可怕的想法。使用重定向来保存您的SEO。对于HTML使用.html,对于PHP使用.php。 - Alien Technology
显示剩余4条评论
12个回答

152

你无法在 .html 文件中运行 PHP,因为服务器不会将其识别为有效的 PHP 扩展名,除非你告诉它这样做。要实现这一点,你需要在根 web 目录下创建一个 .htaccess 文件,并将以下行添加到其中:

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

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


16
虽然这是正确的,我认为更重要的问题是为什么要这样做?此外,如果有条件,他应该更新服务器配置而不是使用“.htaccess”。 - Explosion Pills
11
我已经多次这样做来隐藏我在使用PHP(以及其他东西)的事实。 - nickb
3
@nickb - "security through obscurity?" 可以翻译为“通过模糊性提高安全性?” - Nathan Long
3
@NathanLong http://www.w3.org/TR/cooluris/ 具体来说,在第4.5节中,“保持实现特定的位和片段,如.php和.asp不要出现在您的URI中,以便稍后更改技术。” - Eric Finn
4
@EricFinn - 这是一个很好的指南。但是,让服务器将“.html”文件处理为PHP甚至不是必要的,也没有帮助。您希望用户访问example.com/foo。您可以使用该URL来提供PHP内容,而不管服务器上的文件名如何。如果用户已经将foo.html加入书签,您仍然可以提供foo.php而无需重命名文件。 - Nathan Long
显示剩余9条评论

20

我认为将PHP写入HTML文件中是令人困惑和反常的。你为什么要这样做?

无论如何,如果你想执行PHP文件并在地址栏中显示为.html,最简单的解决方案是像平常一样使用.php,并在你的.htaccess文件中编写一个规则,就像这样:

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

如果我使用PHP + HTML,应该使用哪种格式呢?我很困惑。我的页面基于PHP有非常短的代码,并且HTML中有许多代码。所以我打算制作一个HTML文件。这是一个不好的习惯吗? - Hoon
4
文件格式应该为.php,因为.html文件只用于包含HTML代码。 - David Morales

15

为了在 .html 文件中使用 PHP,您必须在 HTTP 服务器的配置文件中将它们与您的 PHP 处理器关联起来。在 Apache 中,看起来像这样:

AddHandler application/x-httpd-php .html

你介意评论一下“AddHandler”和“AddType”的区别吗?谢谢。 - PatrickT
1
@PatrickT 最简单的比较方式是AddHandler是一个“输入”映射 - 它将传入的文件扩展名映射到处理程序。AddType修改输出MIME类型头。请参见此处的注释:http://httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype - Chris Trahey

13

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


你也可以尝试使用.phtml。 - Floggedhorse

10
请提供需要翻译的内容。
AddHandler application/x-httpd-php .html

如果你想要做到这一点,可以将内容添加到httpd.conf文件中。 但请记住,如果你这样做,那么你的Web服务器将非常慢,因为它将解析甚至不包含php代码的静态代码。 更好的方法是将文件扩展名改为.phtml而不仅仅是.html


5
请记住不要将整个答案都用粗体字写出来。 - David Morales

7
默认情况下,无法在HTML页面中使用PHP。
为此,您需要修改.htaccess文件并添加以下内容:
AddType application/x-httpd-php .html

7
要使.html文件被解析,您需要在服务器配置中设置适当的处理程序。
对于Apache httpd 2.X,以下是相应的行:
AddHandler application/x-httpd-php .html

请查看PHP文档以获取有关您特定服务器安装的信息。

6
使用记事本创建一个空文件并将其命名为.htaccess,然后将该文件复制到您的项目目录中,并添加以下行并保存。
AddType application/x-httpd-php .htm .html

否则,使用.php保存.html文件,因为php支持html,并在计算机/var/www/html路径(Linux)中保存它。


3
感谢您考虑到那些甚至不知道如何创建 .htaccess 文件的人。 - quantme

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函数从外部URL导入JSON数据,该数据必须使用php进行解析以清理数据并构建一个HTML表格。到目前为止,我还没有找到将.php文件导入到Google电子表格中的任何方法,因此必须将其保存为.html文件才能让函数正常工作。能够通过.html文件提供php服务对于这种特定的用途是必要的。


非常实用。 - quantme

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


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