หาก ownCloud แจ้งว่าการตั้งค่า Apache AllowOverride Allหายไป ให้เพิ่มการตั้งค่าดังกล่าวลงใน<Directory>บล็อก Apache ที่ตรงกับเส้นทางการติดตั้ง ownCloud ของคุณ ทดสอบการกำหนดค่า และรีโหลด Apache โดยทั่วไปแล้ว ในการติดตั้ง Debian หรือ Ubuntu การตั้งค่าจะอยู่ในโฮสต์เสมือน ownCloud ที่ใช้งานอยู่ หรือในบล็อกไดเร็กทอรีที่ตรงกันในการกำหนดค่าของ Apache อย่าเปิดใช้งานการแทนที่ทั่วทั้งเซิร์ฟเวอร์เพียงเพื่อล้างคำเตือนเพียงรายการเดียว
ใน ownCloud Server (Classic) จำเป็นต้องอนุญาตให้ Apache อ่าน.htaccessกฎของระบบ กฎเหล่านั้นสนับสนุนการเขียน URL ใหม่และช่วยปกป้องเส้นทางข้อมูลที่สำคัญ ดังนั้น กฎที่ขาดหายไปหรือไม่มีผล อาจส่งผลกระทบต่อทั้ง URL ที่ปลอดภัยและการตรวจสอบความปลอดภัยของไดเร็กทอรีข้อมูล คู่มือนี้ใช้ได้กับ ownCloud Server ที่ใช้ Apache HTTP Server เท่านั้น ไม่สามารถใช้ได้กับ Nginx, ownCloud Infinite Scale หรือการตั้งค่าโฮสติ้งที่ผู้ให้บริการควบคุมการกำหนดค่า Apache
ข้อมูลอ้างอิงฉบับย่อ
| เป้าหมาย | ตรวจสอบหรือตั้งค่า |
| อนุญาตให้ ownCloud ใช้กฎต่อไดเร็กทอรี | AllowOverride Allใน<Directory>บล็อก ที่ตรงกัน |
| ยืนยันว่า Apache สามารถประมวลผลการเปลี่ยนแปลงได้ | sudo apachectl -tควรรายงานSyntax OK |
| เปิดใช้งานการกำหนดค่า | sudo systemctl reload apache2บน Debian หรือ Ubuntu |
| ตรวจสอบ URL ที่สะอาด | ตรวจสอบให้แน่ใจmod_rewriteว่าได้เปิดใช้งานแล้ว หากการกำหนดค่าของคุณต้องการ |
| ยืนยันว่าคำเตือนหายไปแล้ว | โปรดโหลดหน้าภาพรวมการดูแลระบบของ ownCloud ใหม่หลังจากทดสอบ URL ที่ได้รับผลกระทบแล้ว |
คำเตือนนั้นหมายความว่าอย่างไร
คำสั่ง ของ Apache AllowOverrideจะตัดสินว่าคำสั่งใน.htaccessไฟล์ได้รับอนุญาตให้มีผลต่อคำขอหรือไม่ Apache จะยอมรับเฉพาะคำสั่งAllowOverrideภายใน<Directory>ส่วนที่กำหนดเท่านั้น การวางบรรทัดไว้ที่ระดับบนสุดของโฮสต์เสมือนหรือในบล็อกที่ไม่เกี่ยวข้องจะไม่ทำให้คำสั่งนั้นมีผลกับไฟล์ ownCloud <Directory>นอกจากนี้ กฎที่กว้างกว่า กฎที่เฉพาะเจาะจงกว่า หรือโฮสต์เสมือนอื่นที่เปิดใช้งานอยู่ อาจหมายความว่าการตั้งค่าที่คุณแก้ไขนั้นไม่ใช่การตั้งค่าที่ใช้กับคำขอ
คู่มือการติดตั้ง ownCloud สำหรับ Server 10.16 ฉบับปัจจุบัน แสดงให้เห็นว่าAllowOverride Allในบล็อกไดเร็กทอรีสำหรับรูทเอกสารของ ownCloud นั้น “ทั้งหมด” จะอนุญาตให้ใช้คลาสที่ถูกแทนที่ซึ่งได้รับการสนับสนุนโดยโมดูลของ Apache ในขอบเขตนั้น ควรจำกัดสิทธิ์นั้นไว้เฉพาะในไดเร็กทอรี ownCloud เท่านั้น แทนที่จะเปลี่ยนแปลงนโยบายระบบไฟล์โดยรวมของ Apache คู่มือของ Apache ยังอธิบายAllowOverrideListถึงวิธีการสำหรับผู้ดูแลระบบที่ต้องการอนุญาตเฉพาะคำสั่งบางอย่างเท่านั้น แต่รายการที่จำกัดนั้นจำเป็นต้องมีการทดสอบความเข้ากันได้อย่างระมัดระวังกับเวอร์ชัน ownCloud และ.htaccessกฎ ที่มาพร้อมกับระบบ
ตัวอย่างโฮสต์เสมือนจะวางไว้AllowOverride Allภายในบล็อกไดเร็กทอรีสำหรับ/var/www/owncloud.
ก่อนที่จะเปลี่ยน Apache
- ตรวจสอบให้แน่ใจว่าผลิตภัณฑ์คือ ownCloud Server (Classic) และระบุเส้นทางไฟล์ระบบที่แน่นอนของรูทเว็บ URL เช่น
/cloudอาจแมปผ่าน Apache Aliasไปยังไดเร็กทอรีบนดิสก์ที่แตกต่างกัน
- ค้นหาไฟล์โฮสต์เสมือนและไฟล์การกำหนดค่าที่ใช้งานอยู่ บน Debian หรือ Ubuntu ตำแหน่งทั่วไปจะอยู่ที่
/etc/apache2/sites-available/และ/etc/apache2/apache2.confบนระบบตระกูล RHEL การกำหนดค่า Apache มักจะอยู่ใน/etc/httpd/ส่วนแผงควบคุมและคอนเทนเนอร์อาจใช้เส้นทางอื่น
- สำรองไฟล์ก่อนทำการแก้ไข และเก็บรักษาการตั้งค่า TLS, proxy, access-control และ ownCloud ที่มีอยู่เดิมไว้
- ตรวจสอบว่ามีกฎอื่น
AllowOverride Noneหรือกฎไดเร็กทอรีที่ใช้กับเส้นทางเดียวกันหรือไม่ ห้ามแก้ไขไฟล์ไซต์เริ่มต้นที่ไม่ได้เปิดใช้งานสำหรับชื่อโฮสต์ ownCloud
แก้ไขปัญหาเซิร์ฟเวอร์ Apache ที่จัดการด้วยตนเอง
1. แก้ไขการตั้งค่าที่ใช้งานอยู่
บน Debian หรือ Ubuntu ให้เปิดโฮสต์เสมือนที่ให้บริการชื่อโฮสต์ ownCloud ตัวอย่างเช่น:
sudo nano /etc/apache2/sites-available/owncloud.conf
ภายในไฟล์นั้น ให้ค้นหาหรือเพิ่ม<Directory>ส่วนสำหรับไดเร็กทอรีการติดตั้ง ownCloud จริง ตัวอย่างอย่างง่ายนี้แสดงตำแหน่งที่เกี่ยวข้อง โปรดคงคำสั่งเพิ่มเติมใดๆ ที่เซิร์ฟเวอร์ของคุณต้องการไว้:
<Directory /var/www/owncloud/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
แทนที่/var/www/owncloud/ด้วยเส้นทางจริงของคุณ หาก Apache แมป URL ด้วยAliasให้กำหนดค่าไดเร็กทอรีระบบไฟล์ที่มีไฟล์ ownCloud ไม่ใช่เพียงแค่เส้นทาง URL คู่มือการติดตั้ง Apache ของ ownCloud มีหมายเหตุการกำหนดค่าเพิ่มเติม ใช้ตัวอย่างที่ตรงกับเวอร์ชัน ownCloud และการตั้งค่า PHP ของคุณ
2. ตรวจสอบโมดูลและไวยากรณ์
สำหรับ URL ที่สะอาดตาโดยไม่มีindex.phpเครื่องหมายจุลภาค เอกสาร ownCloud mod_rewriteและmod_envข้อกำหนดเบื้องต้น บน Debian หรือ Ubuntu ให้เปิดใช้งานโมดูลการเขียนใหม่หากยังไม่ได้เปิดใช้งาน:
sudo a2enmod rewrite
sudo apachectl -t
การทดสอบการกำหนดค่าควรสิ้นสุดด้วยSyntax OK. หากพบข้อผิดพลาด ให้แก้ไขข้อผิดพลาดนั้นก่อนที่จะโหลดใหม่ การตรวจสอบไวยากรณ์ที่สำเร็จแสดงว่า Apache สามารถวิเคราะห์การกำหนดค่าได้ แต่ไม่ได้แสดงว่าโฮสต์เสมือนที่ถูกต้องทำงานอยู่ หรือกระบวนการที่กำลังทำงานอยู่ได้โหลดไฟล์ที่แก้ไขแล้ว
การทดสอบการกำหนดค่า Apache ควรเสร็จสิ้นSyntax OKก่อนที่คุณจะรีโหลดบริการ
3. รีโหลด Apache และทดสอบ ownCloud
บนระบบปฏิบัติการ Debian หรือ Ubuntu ให้รีโหลด Apache หลังจากตรวจสอบไวยากรณ์สำเร็จ:
sudo systemctl reload apache2
สำหรับระบบตระกูล RHEL บริการนี้มักจะมีชื่อว่าhttpdดังนั้นให้ใช้ชื่อบริการที่ตรงกันและคำสั่ง configuration-test ของระบบปฏิบัติการนั้นๆ อย่าคัดลอกคำสั่งเฉพาะของ Debian ไปยังระบบอื่นโดยไม่ตรวจสอบโครงสร้างบริการของระบบนั้นก่อน
เปิดชื่อโฮสต์ ownCloud ในเบราว์เซอร์และทดสอบหน้าเว็บที่ก่อนหน้านี้ต้องแก้ไขการเขียนทับ หากเซิร์ฟเวอร์ใช้คำนำหน้าพาธ เช่น/cloud`<path_prefix>` ให้ทดสอบ URL ที่มีคำนำหน้าด้วย การวนลูปการเปลี่ยนเส้นทาง การตอบสนอง 403 หรือข้อผิดพลาด Apache 500 หมายความว่าการกำหนดค่ายังคงต้องได้รับการตรวจสอบ ตรวจสอบบันทึกข้อผิดพลาดของ Apache และบันทึก ownCloud แทนที่จะเปลี่ยนคำสั่งที่ไม่เกี่ยวข้องซ้ำๆ
เปิดใช้งานmod_rewriteเฉพาะเมื่อจำเป็น จากนั้นรีโหลดบริการ Apache หลังจากตรวจสอบไวยากรณ์สำเร็จแล้ว
หากคำเตือนยังคงอยู่
| อาการ | ตรวจสอบถัดไป |
| คำเตือนยังคงปรากฏหลังจากโหลดหน้าเว็บใหม่ | ตรวจสอบให้แน่ใจว่าโฮสต์เสมือนที่แก้ไขแล้วเปิดใช้งานอยู่และให้บริการชื่อโฮสต์ ตรวจสอบapachectl -Sและตรวจสอบว่าไม่มีกฎไดเร็กทอรีระดับล่างหรือเฉพาะเจาะจงเพิ่มเติม |
URL ที่สะอาดตายังคงรวมถึงindex.php | ตรวจสอบว่าmod_rewriteเปิดใช้งานแล้ว ไดเร็กทอรี ownCloud มีสิทธิ์ในการเขียนทับตามที่ต้องการ และฐานการเขียนใหม่ของ ownCloud ตรงกับเส้นทาง URL ของไดเร็กทอรีนั้น |
| หน้าผู้ดูแลระบบระบุว่าไดเร็กทอรีข้อมูลอาจสามารถเข้าถึงได้โดยสาธารณะ | ตรวจสอบให้แน่ใจว่าไดเร็กทอรีข้อมูลอยู่นอกไดเร็กทอรีหลักของเว็บไซต์ หากเป็นไปได้ มิเช่นนั้น ให้ตรวจสอบว่าไดเร็กทอรีข้อมูลที่จัดส่งมานั้น.htaccessมีอยู่จริง สามารถอ่านได้ และได้รับการยอมรับจาก Apache การล้างคำเตือนไม่ถือเป็นการทดแทนการปกป้องไดเร็กทอรี |
| Apache จะแสดงรหัสข้อผิดพลาด 500 หรือแจ้งว่า “ไม่อนุญาตให้ใช้งานที่นี่” | อ่านบันทึกข้อผิดพลาดของ Apache คำสั่งบางอย่าง.htaccessอาจไม่ได้รับอนุญาตจากคลาสที่ใช้งานอยู่ หรือโมดูลที่จำเป็นอาจไม่พร้อมใช้งาน |
| ทำงานภายในคอนเทนเนอร์หรือโฮสต์ที่ได้รับการจัดการ | ตรวจสอบการตั้งค่า Apache ที่ระบุไว้ในเอกสารของอิมเมจ หรือแผงควบคุมของผู้ให้บริการ ไฟล์ Apache ระดับโฮสต์อาจไม่ใช่เซิร์ฟเวอร์ที่จัดการคำขอ |
หาก ownCloud แจ้งว่า.htaccessไม่สามารถอัปเดตไฟล์ได้ ให้ตรวจสอบความเป็นเจ้าของและสิทธิ์ในการเขียนตามคำแนะนำในการอัปเกรดและการรักษาความปลอดภัยของ ownCloud ก่อนที่จะเปลี่ยนแปลง หลีกเลี่ยงการทำให้เว็บเซิร์ฟเวอร์สามารถเขียนทับการติดตั้งทั้งหมดได้เพื่อเป็นทางลัด เอกสารของ ownCloud ระบุว่ารายละเอียดการกำหนดค่าจะแตกต่างกันไปตามการติดตั้ง และ PHP-FPM ไม่ได้ใช้การตั้งค่า PHP จากไฟล์.htaccess; การตั้งค่าสำหรับกรณีนั้นควรอยู่ใน.user.iniไฟล์ ความแตกต่างของ PHP นั้นไม่ได้ทดแทนความจำเป็นของ Apache ในการประมวลผลกฎการเขียนใหม่และการเข้าถึงของ ownCloud
รายการตรวจสอบการยืนยัน
- เส้นทาง
<Directory>ตรงกับไฟล์ ownCloud บนดิสก์ทุกประการ
- บล็อกการจับคู่ประกอบด้วย
AllowOverride Allและไม่มีกฎขัดแย้งที่ใช้งานอยู่ใด ๆ ที่มีลำดับความสำคัญเหนือกว่า
sudo apachectl -tส่งSyntax OKคืน
- Apache ได้ถูกโหลดใหม่โดยใช้ชื่อบริการที่ถูกต้องแล้ว
- หน้าเข้าสู่ระบบ ownCloud และ URL ที่เคยได้รับผลกระทบก่อนหน้านี้ โหลดผ่าน HTTPS ได้ตามปกติแล้ว
- หลังจากรีเฟรชหน้าเว็บแล้ว หน้าภาพรวมการบริหารจัดการจะไม่แสดงคำเตือนเดิมอีกต่อไป และไดเร็กทอรีข้อมูลยังคงไม่สามารถเข้าถึงได้จากเว็บสาธารณะ
ตัวอย่างหน้าเข้าสู่ระบบ ownCloud ที่ชื่อโฮสต์ที่กำหนดค่าไว้ โปรดตรวจสอบสถานะคำเตือนที่แท้จริงในภาพรวมการดูแลระบบของคุณเอง
ข้อมูลอ้างอิงอย่างเป็นทางการ