SSI включает в себя не работать на Debian с Apache


12

Я пытаюсь заставить SSI работать на Debian под управлением Apache, однако .shtmlфайлы не анализируются. Из файла PHP с phpinfo()я вижу, что в разделе загруженных модулей отображаются следующие:

mod_mime_xattr mod_mime mod_mime_magic

У /etc/apache2/mods-enabled/mime.confменя есть (между прочим):

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

В /etc/apache2/sites-enabled/domain.com.conf(для рассматриваемого виртуального хоста):

<Directory /home/username/public_html>
Options +Includes
allow from all
AllowOverride All 
</Directory>

и для хорошей меры я добавил следующее:

<Directory />
Options +Includes
</directory>

В файле пользователя .htaccessя попытался добавить:

Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml

Ничто не похоже на работу. Как я могу даже отладить это?

Редактировать:

Вот вывод ls /etc/apache2/mods-enabled/на случай, если это поможет

actions.conf          dav_svn.load         proxy_balancer.load
actions.load          deflate.conf         proxy.conf
alias.conf            deflate.load         proxy_connect.load
alias.load            dir.conf             proxy_http.load
auth_basic.load       dir.load             proxy.load
auth_digest.load      env.load             python.load
authn_file.load       fcgid.conf           reqtimeout.conf
authz_default.load    fcgid.load           reqtimeout.load
authz_groupfile.load  mime.conf            rewrite.load
authz_host.load       mime.load            ruby.load
authz_user.load       mime_magic.conf      setenvif.conf
autoindex.conf        mime_magic.load      setenvif.load
autoindex.load        mime-xattr.load      ssl.conf
cgi.load              negotiation.conf     ssl.load
dav_fs.conf           negotiation.load     status.conf
dav_fs.load           php5.conf            status.load
dav.load              php5.load            suexec.load
dav_svn.conf          proxy_balancer.conf

Когда вы посещаете .shtmlстраницу, вы видите что-нибудь в журнале ошибок Apache?
Зоредаче

На самом деле да. В error.log[error] an unknown filter was not added: includes
Майк

Закомментирование строки AddOutputFilter INCLUDES .shtmlизбавляет от ошибки, но все еще не решает проблему
Майк

ОК, я понял это. Я опубликую свой ответ на случай, если у других возникнут те же проблемы.
Майк

Ответы:


12

Чтобы заставить серверные включения работать, includeмодуль также должен быть загружен. Вы можете сделать это, выполнив следующее от имени пользователя root:

a2enmod include

Или выполните следующее:

ln -s /etc/apache2/mods-available/include.conf /etc/apache2/mods-enabled/include.conf
ln -s /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled/include.load

Затем перезапустите Apache.

Обратите внимание, если бы вы добавляли SSI к .shtmlфайлам из .htaccessвас, вы бы это сделали AddOutputFilter INCLUDES .shtml. Или замените .shtmlфайл любого типа, который вы хотите проанализировать на стороне сервера.

Текущий файл конфигурации Debian /etc/apache2/mods-available/mime.confсодержит ошибку в том, что он добавляет следующее:

<IfModule mod_mime.c>
[...]
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
[...]
</IfModule>

без предварительной проверки, mod_include.cбыл ли загружен. Чтобы обойти это, вы можете изменить эти строки на:

<IfModule mod_mime.c>
[...]
<IfModule mod_include.c>
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
[...]
</IfModule>

Эти <IfModule>теги могут быть вложенными. Это избавит от сообщений об ошибках, которые вы испытываете в случае, если mod_include.cон не загружен.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.