我无法在HTML页面中使用PHP。 例如,index.html
。 我已经尝试过使用以下两种方式:
<? contents ?>
并且
<?php contents ?>
这两个都不起作用。我的服务器提供了PHP,在我使用.php
扩展名时,它能正常工作。这是一个问题吗?还是我需要更改php.ini
中的偏好设置呢?
我无法在HTML页面中使用PHP。 例如,index.html
。 我已经尝试过使用以下两种方式:
<? contents ?>
并且
<?php contents ?>
这两个都不起作用。我的服务器提供了PHP,在我使用.php
扩展名时,它能正常工作。这是一个问题吗?还是我需要更改php.ini
中的偏好设置呢?
你无法在 .html 文件中运行 PHP,因为服务器不会将其识别为有效的 PHP 扩展名,除非你告诉它这样做。要实现这一点,你需要在根 web 目录下创建一个 .htaccess 文件,并将以下行添加到其中:
AddType application/x-httpd-php .htm .html
这将告诉Apache将扩展名为.htm或.html的文件视为PHP文件进行处理。
example.com/foo
。您可以使用该URL来提供PHP内容,而不管服务器上的文件名如何。如果用户已经将foo.html
加入书签,您仍然可以提供foo.php
而无需重命名文件。 - Nathan Long我认为将PHP写入HTML文件中是令人困惑和反常的。你为什么要这样做?
无论如何,如果你想执行PHP文件并在地址栏中显示为.html,最简单的解决方案是像平常一样使用.php,并在你的.htaccess文件中编写一个规则,就像这样:
RewriteRule ^([^.]+)\.html$ $1.php [L]
为了在 .html 文件中使用 PHP,您必须在 HTTP 服务器的配置文件中将它们与您的 PHP 处理器关联起来。在 Apache 中,看起来像这样:
AddHandler application/x-httpd-php .html
你可以像其他人所说的那样修改 .htaccess 文件,但最快的解决方案是将文件扩展名改为 .php
AddHandler application/x-httpd-php .html
如果你想要做到这一点,可以将内容添加到httpd.conf
文件中。
但请记住,如果你这样做,那么你的Web服务器将非常慢,因为它将解析甚至不包含php代码的静态代码。
更好的方法是将文件扩展名改为.phtml
而不仅仅是.html
。
AddType application/x-httpd-php .html
.html
文件被解析,您需要在服务器配置中设置适当的处理程序。AddHandler application/x-httpd-php .html
AddType application/x-httpd-php .htm .html
否则,使用.php保存.html文件,因为php支持html,并在计算机/var/www/html路径(Linux)中保存它。
<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服务对于这种特定的用途是必要的。
现代修订版:您还需要通过更改php-fpm中的“security.limit_extensions”来修复它。您可能已经了解到将apache更改为AddHandler / AddType的机制,我这里不再赘述。
您必须找出您设置中的php-fpm /conf所在位置。我是通过执行以下命令来完成的:
# grep -rnw '/etc/' -e 'security.limit_extensions'
我得到了以下结果:
'/etc/php-fpm.d/www.conf:387:;security.limit_extensions = .php .php3 .php4 .php5 .php7'
进入此文件,编辑并确保您意识到它被注释掉了。例如:将其从';security.limit_extensions = .php .php3 .php4 .php5 .php7'
更改为'security.limit_extensions = .php .htm'
,请注意分号已被删除。然后重新启动apache /(或nginx),并重新启动php-fpm:# service php-fpm restart
# service httpd restart