HTML中嵌入PHP程式碼會被瀏覽器注釋的解決方法
- 2019 年 11 月 13 日
- 筆記
今天在引入模板文件時,在HTML文件中直接嵌入PHP程式碼引入模板文件,發現不起效。打開瀏覽器開發者工具,發現該部分程式碼被注釋了。
正常PHP入模板文件,可以這樣寫:
<?php include "tmp.php";/*例如引入統計目錄下的tmp.php文件*/ ?>
但是直接在HTML中插入PHP語句是不能被瀏覽器正常解析的,必須要用PHP環境運行的文件才可以解析PHP程式碼。
我嘗試使用PHP文件引入HTML文件,然後再在HTML文件中使用PHP程式碼,是可以正常運行的。
/*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程式,程式碼如下:
AddType application/x-httpd-php .txt
修改完成後,需要重啟Apache伺服器。
如果只想在一個HTML文件中包含和運行PHP腳本,可以這樣設置:
<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