簡體   English   中英

PHP中包含的SSI作為模板不起作用

[英]SSI included in PHP as template not working

我正在使用用PHP編寫的Ganglia-web-frontend 它使用模板文件添加個人頁眉/頁腳。 我想使用我編寫的SSI頁面集,但是apache無法解釋SSI代碼。

更清楚地講,神經節使用$tpl = new TemplatePower( template("$header.tpl") ); 包括我的標題模板文件。 在我的header.tpl文件中,輸入: <!--#include virtual="/include/header.shtml" --> ,這是我包含的文件(與我的個人頁面/腳本完美配合)。

如果查看我在firefox(ctrl + U)中獲得的HTML代碼,我會發現apache已將SSI區域<!--#include virtual="/include/header.shtml" -->作為注釋,並具有不解釋它。

我想這與事物解釋/執行的順序有關,但是我找不到實現它的方法。 有人有主意嗎? 如果需要,我也有權訪問apache配置。

提前致謝

編輯:

根據Sasha的建議,我嘗試添加

AddType text/html .tpl 
AddHandler server-parsed .tpl
AddOutputFilter INCLUDES .tpl

/etc/apache2/httpd.conf,但這無濟於事。 我不明白...

編輯2:

我想這可能與PHP TemplatePower模塊有關。 但是我無法使它工作。 我也嘗試添加$tpl->assignInclude( "header", "./header.tpl" ); 在神經節來源,但這無濟於事。

是否.tpl Apache配置為預處理.tpl文件作為服務器端包含文件? 如果不是,它將忽略那些文件中的SSI指令。

mod_include文檔中有關“啟用服務器端包含”的部分詳細介紹了如何配置它。 您需要確保AddTypeAddOutputFilter指令中存在.tpl

您正在將模板作為TemplatePower模板加載。 因此,不是Apache托管該.tpl文件,而是您的腳本通過該TemplatePower對象托管。

因此,這超出了Apache的內容處理程序和動作處理程序的范圍。

如果您將PHP作為apache SAPI運行,則可以使用virtual()函數。

然后,您可以擴展模板引擎以解釋其中包括虛擬SSI命令的那些,並調用virtual()函數。

因此,這里的重點實際上是,最終Apache需要通過子請求執行shtml模板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM