O SSI inclui não funcionar no Debian com Apache


12

Estou tentando fazer com que o SSI funcione no Debian executando o Apache, no entanto, os .shtmlarquivos não estão sendo analisados. Em um arquivo PHP com phpinfo(), posso ver que o seguinte aparece na seção de módulos carregados:

mod_mime_xattr mod_mime mod_mime_magic

Em /etc/apache2/mods-enabled/mime.confeu tenho (entre outras coisas):

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

Em /etc/apache2/sites-enabled/domain.com.conf(para o host virtual em questão), tenho:

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

e por uma boa medida, adicionei o seguinte também:

<Directory />
Options +Includes
</directory>

No .htaccessarquivo do usuário , tentei adicionar:

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

Nada parece funcionar. Como posso depurar isso?

Editar:

Aqui está a saída de ls /etc/apache2/mods-enabled/caso isso ajude

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

Quando você visita uma .shtmlpágina, vê alguma coisa no log de erros do Apache?
Zoredache

Na verdade sim. Em error.log[error] an unknown filter was not added: includes
Mike

Comentar a linha AddOutputFilter INCLUDES .shtmlelimina o erro, mas ainda não resolve o problema
Mike

OK, eu descobri. Vou postar minha resposta caso outras pessoas tenham os mesmos problemas.
1155 Mike

Respostas:


12

Para que as inclusões do servidor funcionem, o includemódulo também precisa ser carregado. Você pode fazer isso executando o seguinte como root:

a2enmod include

Ou execute o seguinte:

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

Então reinicie o apache.

Observe que, se você estivesse adicionando SSI aos .shtmlarquivos .htaccess, faria AddOutputFilter INCLUDES .shtml. Ou substitua .shtmlo tipo de arquivo que você deseja analisar pelo lado do servidor.

O arquivo de configuração atual da Debian /etc/apache2/mods-available/mime.confcontém um erro, pois adiciona o seguinte:

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

sem primeiro verificar se mod_include.cfoi carregado. Para contornar isso, você pode alterar essas linhas para:

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

As <IfModule>tags podem ser aninhadas. Isso eliminará as mensagens de erro que você está enfrentando no caso de mod_include.cnão ser carregado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.