SSI bao gồm không hoạt động trên Debian với Apache


12

Tôi đang cố gắng để SSI hoạt động trên Debian chạy Apache, tuy nhiên các .shtmltệp không được phân tích cú pháp. Từ một tệp PHP với phpinfo()tôi có thể thấy rằng phần sau hiển thị trong phần mô-đun được tải:

mod_mime_xattr mod_mime mod_mime_magic

Trong /etc/apache2/mods-enabled/mime.conftôi có (trong số những thứ khác):

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

Trong /etc/apache2/sites-enabled/domain.com.conf(đối với máy chủ ảo trong câu hỏi) tôi có:

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

và để có biện pháp tốt, tôi cũng đã thêm vào như sau:

<Directory />
Options +Includes
</directory>

Trong .htaccesstệp của người dùng , tôi đã thử thêm:

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

Dường như không có gì để làm việc Làm thế nào tôi thậm chí có thể gỡ lỗi này?

Biên tập:

Đây là đầu ra của ls /etc/apache2/mods-enabled/trong trường hợp này giúp

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

Khi bạn truy cập một .shtmltrang, bạn có thấy bất cứ điều gì trong nhật ký lỗi Apache không?
Zoredache

Trên thực tế, có. Trong lỗi.log[error] an unknown filter was not added: includes
Mike

Nhận xét dòng đã AddOutputFilter INCLUDES .shtmlthoát khỏi lỗi, nhưng vẫn không giải quyết được vấn đề
Mike

OK tôi đã tìm ra nó. Tôi sẽ đăng câu trả lời của mình trong trường hợp những người khác gặp vấn đề tương tự.
Mike

Câu trả lời:


12

Để có được phía máy chủ bao gồm để làm việc, includemô-đun cũng cần phải được tải. Bạn có thể làm điều này bằng cách thực hiện như sau với quyền root:

a2enmod include

Hoặc thực hiện như sau:

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

Sau đó khởi động lại apache.

Lưu ý, nếu bạn đã thêm SSI vào .shtmlcác tệp từ .htaccessbạn sẽ làm AddOutputFilter INCLUDES .shtml. Hoặc thay thế .shtmlcho bất kỳ loại tệp nào bạn muốn được phân tích cú pháp bởi phía máy chủ bao gồm.

Tệp cấu hình Debian hiện tại /etc/apache2/mods-available/mime.confchứa một lỗi trong đó nó thêm vào như sau:

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

mà không kiểm tra trước xem mod_include.cđã được tải chưa. Để giải quyết vấn đề này, bạn có thể thay đổi những dòng này thành:

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

Các <IfModule>thẻ có thể được lồng nhau. Điều này sẽ loại bỏ các thông báo lỗi mà bạn đang gặp phải trong trường hợp mod_include.ckhông được tải.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.