我试图让SSI在运行Apache的Debian上运行,但是.shtml文件没有被parsing。 从一个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
似乎没有任何工作。 我怎样才能debugging呢?
编辑:
这里是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
为了使服务器端包含工作, 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添加到.htaccess .shtml文件中,您将执行AddOutputFilter INCLUDES .shtml 。 或者用.shtml代替你希望由服务器端parsing的文件types。
目前的Debianconfiguration文件/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未加载时遇到的错误消息。