今天在引入模板文件时,在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.当访问一个网页时,服务器会根据文件扩展名来判断如何处理页面,一般来说,当检查到扩展名为 htm
或 html
时,服务器将不做任何解析处理,直接呈现到浏览器端。
如果检测到扩展名是 PHP
、shtml
、ASP
或 JSP
等文件,服务器会先将这些文件解析成HTML代码,然后将代码呈现到浏览器上。
若想在HTML文件中运行PHP代码,需要修改服务器软件(Apache)的配置文件。
首先,打开 Apache 的安装目录,在 apacheconf
下找到:httpd.conf
配置文件,用记事本打开,在最后添加下列代码:
AddType application/x-httpd-php .html
意为可以执行PHP的文件类型,如果让 .html
和 .htm
都能执行PHP文件,可以这样写:用空格隔开
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.conf
中 DocumentRoot
指定的目录下,也就是虚拟主机环境下,否则无法运行。
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
文件类型。
security.limit_extensions = .php .php3 .php4 .php5 .html