HTML中嵌入PHP程式碼會被瀏覽器注釋的解決方法

  • 2019 年 11 月 13 日
  • 筆記

在HTML中嵌入PHP程式碼時,會被瀏覽器注釋掉。

今天在引入模板文件時,在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.當訪問一個網頁時,伺服器會根據文件擴展名來判斷如何處理頁面,一般來說,當檢查到擴展名為 htmhtml 時,伺服器將不做任何解析處理,直接呈現到瀏覽器端。

如果檢測到擴展名是 PHPshtmlASPJSP 等文件,伺服器會先將這些文件解析成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.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 文件類型。

security.limit_extensions = .php .php3 .php4 .php5 .html