HTML中嵌入PHP代码会被浏览器注释的解决方法

2019-11-13 10:26:48 浏览数 (1)

在HTML中嵌入PHP代码时,会被浏览器注释掉。

今天在引入模板文件时,在HTML文件中直接嵌入PHP代码引入模板文件,发现不起效。打开浏览器开发者工具,发现该部分代码被注释了。

正常PHP入模板文件,可以这样写:

代码语言:javascript复制
<?php
    include "tmp.php";/*例如引入统计目录下的tmp.php文件*/
?>

但是直接在HTML中插入PHP语句是不能被浏览器正常解析的,必须要用PHP环境运行的文件才可以解析PHP代码。

我尝试使用PHP文件引入HTML文件,然后再在HTML文件中使用PHP代码,是可以正常运行的。

代码语言:javascript复制
/*include.php文件中的代码*/
include "index.html";

/*index.html*/
<?php
    include "tmp.php";
?>

/*tmp.php*/
echo "这是一个模板文件";

这样是可以正常解析的,说明只要通过PHP环境运行的文件就可以执行PHP代码。

如果一定要用PHP环境来运行HTML文件也不是没有办法:

1.可以把 *.html 后缀改成 *.php ,因为HTML不能解析PHP的内容,除非使用模板引擎,比如:TP(ThinkPHP)。

2.当访问一个网页时,服务器会根据文件扩展名来判断如何处理页面,一般来说,当检查到扩展名为 htmhtml 时,服务器将不做任何解析处理,直接呈现到浏览器端。

如果检测到扩展名是 PHPshtmlASPJSP 等文件,服务器会先将这些文件解析成HTML代码,然后将代码呈现到浏览器上。

若想在HTML文件中运行PHP代码,需要修改服务器软件(Apache)的配置文件

首先,打开 Apache 的安装目录,在 apacheconf 下找到:httpd.conf 配置文件,用记事本打开,在最后添加下列代码:

代码语言:javascript复制
AddType application/x-httpd-php .html

意为可以执行PHP的文件类型,如果让 .html.htm 都能执行PHP文件,可以这样写:用空格隔开

代码语言:javascript复制
AddType application/x-httpd-php .html .htm

如果让普通的文本文件,也能运行PHP程序,代码如下:

代码语言:javascript复制
AddType application/x-httpd-php .txt

修改完成后,需要重启Apache服务器。

如果只想在一个HTML文件中包含和运行PHP脚本,可以这样设置:

代码语言:javascript复制
<files index.html>
AddType application/x-httpd-php .html
</filrs>

注意:HTML文件必须放在Apache配置文件 httpd.confDocumentRoot 指定的目录下,也就是虚拟主机环境下,否则无法运行。

Nginx服务器配置修改:

在Nginx配置文件 server 下加入 html 文件交给本地 php-fpm 处理解析

location ~ .php$ | .html$ {

    fastcgi_pass 127.0.0.1:9000;

    fastcgi_index index.php;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    include fastcgi_cgi;

}

同时,在 php-fpm 配置文件内有 see security.limit_extensions 这项,默认只允许解析扩展名为 .php 的文件,造成其他文件不可解析。

解决办法:修改 php-fpm 文件, 去掉 ;security.limit_extensions = .php .php3 .php4 .php5 前面的注释号,在最后添加 .html 文件类型。

代码语言:javascript复制
security.limit_extensions = .php .php3 .php4 .php5 .html

0 人点赞