SSI obejmuje niedziałanie na Debianie z Apache

12

Próbuję zmusić SSI do pracy na Debianie z uruchomionym Apache, jednak .shtmlpliki nie są analizowane. Z pliku PHP phpinfo()widzę, że w sekcji załadowanych modułów pojawiają się następujące elementy:

mod_mime_xattr mod_mime mod_mime_magic

W /etc/apache2/mods-enabled/mime.confMam (między innymi):

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

W /etc/apache2/sites-enabled/domain.com.conf(dla danego wirtualnego hosta) mam:

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

i dla pewności dodałem również:

<Directory />
Options +Includes
</directory>

W .htaccesspliku użytkownika próbowałem dodać:

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

Wydaje się, że nic nie działa. Jak mogę to debugować?

Edytować:

Oto dane wyjściowe ls /etc/apache2/mods-enabled/na wypadek, gdyby to pomogło

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
Mikrofon
źródło
Czy odwiedzając .shtmlstronę, widzisz coś w dzienniku błędów Apache?
Zoredache,
Aktualnie tak. W error.log[error] an unknown filter was not added: includes
Mike
Komentowanie linii AddOutputFilter INCLUDES .shtmlpozbywa się błędu, ale nadal nie rozwiązuje problemu
Mike
OK, rozgryzłem to. Wyślę odpowiedź na wypadek, gdyby inni mieli te same problemy.
Mike

Odpowiedzi:

12

Aby serwer działał po stronie serwera, includemoduł również musi zostać załadowany. Możesz to zrobić, wykonując następujące czynności jako root:

a2enmod include

Lub wykonaj następujące czynności:

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

Następnie uruchom ponownie apache.

Uwaga: jeśli dodajesz SSI do .shtmlplików .htaccess, zrobiłbyś to AddOutputFilter INCLUDES .shtml. Lub zastąp .shtmldowolny typ pliku, który chcesz przeanalizować po stronie serwera.

Bieżący plik konfiguracyjny Debiana /etc/apache2/mods-available/mime.confzawiera błąd polegający na tym, że dodaje:

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

bez uprzedniego sprawdzenia, czy mod_include.czostał załadowany. Aby obejść ten problem, możesz zmienić te linie na:

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

Te <IfModule>znaczniki mogą być zagnieżdżane. Spowoduje to pozbycie się komunikatów o błędach, które występują w przypadku mod_include.cnie załadowania.

Mikrofon
źródło