SSI включен в PHP, так как шаблон не работает

Я использую Ganglia-web-frontend, написанный на PHP. Он использует файлы шаблонов для добавления личных верхних и нижних колонтитулов. Я хочу использовать написанный мной набор страниц SSI, но код SSI не интерпретируется apache.

более ясно, ганглия использует $tpl = new TemplatePower( template("$header.tpl") ); для включения моего файла шаблона заголовка. В моем файле header.tpl я помещаю: <!--#include virtual="/include/header.shtml" -->, который является моим включенным файлом (и который отлично работает с моими личными страницами/скриптами).

Если посмотреть на HTML-код, который я получаю в firefox (ctrl+U), я вижу, что apache включил зону SSI <!--#include virtual="/include/header.shtml" --> в качестве комментария и не интерпретировал ее.

Я предполагаю, что есть что-то, связанное с порядком, в котором вещи интерпретируются/выполняются, но я не могу найти способ заставить это работать. У кого-нибудь есть идея? У меня также есть root-доступ к конфигурации Apache, если это необходимо.

заранее спасибо

РЕДАКТИРОВАТЬ:

Следуя предложениям Саши, я попытался добавить

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

в /etc/apache2/httpd.conf, но это не помогает. я не понимаю...

РЕДАКТИРОВАТЬ 2:

Я предполагаю, что это может быть проблема с модулем PHP TemplatePower. Но я не могу заставить его работать. Я пытался добавить также $tpl->assignInclude( "header", "./header.tpl" ); в источники ганглиев, но это не помогает.


person Danduk82    schedule 09.05.2014    source источник


Ответы (2)


Настроен ли Apache для предварительной обработки .tpl файлов как включений на стороне сервера? В противном случае он будет игнорировать директивы SSI в этих файлах.

Раздел 'Включение включений на стороне сервера' в документации mod_include содержит подробную информацию о том, как это настроить. Вам необходимо убедиться, что .tpl присутствует в директивах AddType и AddOutputFilter.

person Sasha    schedule 09.05.2014
comment
Спасибо за ваш ответ, я попытался добавить AddType text/html .tpl AddHandler server-parsed .tpl AddOutputFilter INCLUDES .tpl в httpd.conf, но это не изменилось. Я получаю тот же результат... - person Danduk82; 09.05.2014
comment
@Danduk82: Вам действительно следует продвигать AddOutputFilter, потому что его проще всего интегрировать. Убедитесь, что выходные данные ваших PHP-скриптов проходят через выходной фильтр apache. Я не видел этого здесь, когда отвечал, а также я не знал, что там работает SSI, но я знаю, как они работают, так что вам действительно стоит это поискать. - person hakre; 12.05.2014
comment
На самом деле мне пришлось добавить AddOutputFilter INCLUDES .php, чтобы Apache правильно передал его. Большое спасибо. - person Danduk82; 12.05.2014

Вы загружаете шаблон как TemplatePower шаблон. Таким образом, не apache размещает этот файл .tpl, а ваш скрипт через этот объект TemplatePower.

Поэтому это выходит за рамки обработчиков контента и обработчиков действий apache.

если вы используете PHP как apache SAPI, вы можете использовать функцию virtual().

Затем вы можете расширить механизм шаблонов, чтобы он интерпретировал виртуальные команды SSI и вызывал функцию virtual().

Таким образом, ключевым моментом здесь является то, что в конце концов Apache должен выполнить шаблон shtml через подзапрос.

person hakre    schedule 11.05.2014