Apacheを実行しているDebianでSSIを機能させようとしていますが、_.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
_
サーバー側インクルードを機能させるには、include
モジュールもロードする必要があります。これを行うには、ルートとして次のコマンドを実行します。
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を再起動します。
.shtml
の.htaccess
ファイルにSSIを追加する場合は、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
がロードされていない場合に発生しているエラーメッセージが削除されます。