[英]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文档中有关“启用服务器端包含”的部分详细介绍了如何配置它。 您需要确保AddType
和AddOutputFilter
指令中存在.tpl
。
您正在将模板作为TemplatePower
模板加载。 因此,不是Apache托管该.tpl文件,而是您的脚本通过该TemplatePower
对象托管。
因此,这超出了Apache的内容处理程序和动作处理程序的范围。
如果您将PHP作为apache SAPI运行,则可以使用virtual()
函数。
然后,您可以扩展模板引擎以解释其中包括虚拟SSI命令的那些,并调用virtual()
函数。
因此,这里的重点实际上是,最终Apache需要通过子请求执行shtml模板。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.