繁体   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