SSI รวมถึงไม่ทำงานบน Debian ด้วย Apache


12

ฉันกำลังพยายามให้ SSI ทำงานบน Debian ที่ใช้ Apache แต่.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

เมื่อคุณเยี่ยมชม.shtmlหน้าคุณเห็นอะไรในบันทึกข้อผิดพลาด Apache?
Zoredache

จริง ๆ แล้วใช่ ใน error.log[error] an unknown filter was not added: includes
Mike

การแสดงความคิดเห็นในบรรทัดAddOutputFilter INCLUDES .shtmlกำจัดข้อผิดพลาด แต่ก็ยังไม่สามารถแก้ปัญหาได้
Mike

ตกลงฉันคิดออก ฉันจะโพสต์คำตอบของฉันในกรณีที่คนอื่นมีปัญหาเดียวกัน
Mike

คำตอบ:


12

เพื่อให้การทำงานของฝั่งเซิร์ฟเวอร์รวมถึง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 จะ.shtmlไฟล์จากคุณจะทำอย่างไร.htaccess 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ไม่ได้โหลด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.