Score:0

Apache ไม่สามารถให้บริการไดเร็กทอรีหรือค้นหาไฟล์ แม้ว่าไฟล์ทั้งหมดจะได้รับอนุญาตถูกต้องก็ตาม

ธง co

ฉันกำลังใช้ CentOS8ด้วยมาตรฐานที่ลุ่ม (ยำติดตั้ง httpd php) การติดตั้ง apache และ php

ฉันมีการกำหนดค่า (/etc/httpd/conf.d/trip.mydomain.mytld.conf) ที่มีลักษณะดังนี้:

<VirtualHost *:80>
    ServerName trip.mydomain.mytld

    DocumentRoot /var/www/trip/public
    <Directory "/var/www/trip/public">
        Require all granted
    </Directory>

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =trip.mydomain.mytld
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

เป็นการตรวจสุขภาพ:

$ ls -la /var/www/
...
drwxr-xr-x. 10 apache root 4096 5 ต.ค. 23:01 เที่ยว
...

$ ls -la /var/www/trip
...
drwxr-xr-x. 7 รูต apache 4096 6 ต.ค. 01:07 น. สาธารณะ
...

$ ls -la /var/www/trip/public
...
-rwxr-xr-x. 1 รูต apache 532 5 ต.ค. 22:04 น. index.php
...

เพื่อให้แน่ใจว่าไม่ใช่ SELinux ฉันได้ปิดการใช้งานและรีสตาร์ทเซิร์ฟเวอร์โดยไม่มีประโยชน์ใดๆ...

ไม่ว่าฉันจะพยายามอะไรก็ตามเมื่อฉันโหลด trip.mydomain.mytldฉันได้รับ 403 Forbidden และบันทึกของฉันเต็มไปด้วย:

AH01276: ไม่สามารถให้บริการไดเร็กทอรี /var/www/tripwire/public: ไม่พบ DirectoryIndex (index.html,index.php) ที่ตรงกัน และดัชนีไดเร็กทอรีที่สร้างโดยเซิร์ฟเวอร์ถูกห้ามโดยคำสั่ง Options

ฉันมีบริการอื่นที่ทำงานด้วยการกำหนดค่าที่คล้ายกันซึ่งใช้งานได้ และฉันก็งุนงงว่าเกิดอะไรขึ้น แต่ฉันเดาว่าเป็นเพราะการกำหนดค่าแรกคือ "ค่าเริ่มต้น" แม้ว่าฉันจะไม่แน่ใจว่าปัญหาใดที่อาจเกิดขึ้น ทำให้.

ในกรณีที่เกี่ยวข้องกับผลลัพธ์ของการวิ่ง httpd -S มีดังนี้

การกำหนดค่า VirtualHost:
*:443 เป็น NameVirtualHost
    เซิร์ฟเวอร์เริ่มต้น auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld-le-ssl.conf:2)
    พอร์ต 443 namevhost auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld-le-ssl.conf:2)
    พอร์ต 443 namevhost tripwire.mydomain.mytld (/etc/httpd/conf.d/tripwire.mydomain.mytld-le-ssl.conf:2)
*:80 เป็น NameVirtualHost
    เซิร์ฟเวอร์เริ่มต้น auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld.conf:1)
    พอร์ต 80 namevhost auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld.conf:1)
    พอร์ต 80 namevhost tripwire.mydomain.mytld (/etc/httpd/conf.d/tripwire.mydomain.mytld.conf:1)
รูทเซิร์ฟเวอร์: "/etc/httpd"
รูทเอกสารหลัก: "/var/www/html"
ErrorLog หลัก: "/etc/httpd/logs/error_log"
Mutex rewrite-map: using_defaults
Mutex ssl-เย็บเล่ม-รีเฟรช: using_defaults
Mutex authdigest-client: using_defaults
Mutex lua-ivm-shm: using_defaults
Mutex การเย็บ ssl: using_defaults
พร็อกซี Mutex: using_defaults
Mutex authn-socache: using_defaults
Mutex ssl-cache: using_defaults
ค่าเริ่มต้นของ Mutex: dir="/etc/httpd/run/" กลไก=ค่าเริ่มต้น
Mutex cache-socache: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex watchdog-callback: using_defaults
Mutex proxy-balancer-shm: using_defaults
PidFile: "/etc/httpd/run/httpd.pid"
กำหนด: DUMP_VHOSTS
กำหนด: DUMP_RUN_CFG
ผู้ใช้: ชื่อ = "apache" id = 48
กลุ่ม: name="apache" id=48
Jose Fernando Lopez Fernandez avatar
คุณลองวางบล็อก 'Directory' ไว้นอกบล็อก 'VirtualHost' แล้วดูว่าเกิดอะไรขึ้น
co flag
ไม่พบการเปลี่ยนแปลงพฤติกรรม :(
Jose Fernando Lopez Fernandez avatar
ขออภัย ฉันพลาดข้อความแสดงข้อผิดพลาด นี่คือปัญหาของคุณ: `ไม่พบ DirectoryIndex (index.html,index.php) ที่ตรงกัน และดัชนีไดเร็กทอรีที่สร้างโดยเซิร์ฟเวอร์ถูกห้ามโดยคำสั่ง Options' ดังนั้นจึงไม่ใช่ปัญหาการอนุญาต เนื่องจากคุณมีไฟล์ `index.php` คุณได้ตรวจสอบว่า PHP ได้รับการกำหนดค่าอย่างถูกต้องหรือไม่?
co flag
เท่าที่ฉันสามารถบอกได้ว่ามันได้รับการกำหนดค่าอย่างถูกต้อง แต่เป็นไปได้อย่างแน่นอนที่ฉันพลาดการตรวจสอบ... `$ sudo php-fpm -t` ให้ผล `[06-Oct-2021 02:22:38] ประกาศ: ไฟล์การกำหนดค่า / การทดสอบ etc/php-fpm.conf สำเร็จ` และ `php-fpm` กำลังทำงานในฐานะผู้ใช้ `apache`
Jose Fernando Lopez Fernandez avatar
ฉันคิดว่า Apache อาจไม่ทราบว่าจำเป็นต้องส่งคำขอไปยังผู้จัดการกระบวนการที่รวดเร็ว คุณสามารถสร้างไฟล์ `test.php` ในไดเร็กทอรีสาธารณะของเซิร์ฟเวอร์ที่มีเฉพาะ `
Jose Fernando Lopez Fernandez avatar
แม้ว่าจะเป็นเรื่องแปลก เนื่องจากข้อความแสดงข้อผิดพลาดมี `index.php` โดยเฉพาะ ดังนั้นจึงอาจไม่ใช่ข้อความนั้น แต่อย่างน้อยก็ช่วยขจัดความเป็นไปได้
co flag
นั่นทำให้เกิดข้อผิดพลาดที่แตกต่างกันอย่างน้อยที่สุด ...`[proxy_fcgi:error] [pid dddd:tid tttt] [client aa.bb.cc.dd:ffff] AH01071: มีข้อผิดพลาด 'ไม่ทราบสคริปต์หลัก\n''
Jose Fernando Lopez Fernandez avatar
ฉันไม่เคยมีปัญหานั้น แต่คำถามอื่น ๆ แนะนำว่าการรีบูตอาจใช้งานได้หรือไม่ คุณลองได้ไหม
co flag
การรีบูต (ของทุกอย่าง php-fpm, apache... และจากนั้นทั้งเครื่อง) ไม่ได้แก้ไขอะไรเลย
Jose Fernando Lopez Fernandez avatar
โอเค โอเค มาดูกันดีกว่า คุณสามารถโพสต์เวอร์ชันของ apache และ httpd ได้หรือไม่ และคุณสามารถโพสต์ตัวจัดการ PHP และการตั้งค่า DirectoryIndex จากการกำหนดค่า apache ของคุณได้หรือไม่
Jose Fernando Lopez Fernandez avatar
[นี่คือคำตอบ](https://serverfault.com/questions/960558/mod-rewrite-on-debian-stretch-breaks-php7-0-fpm-with-ah01071-got-error-primary?rq=1 ) ฉันกำลังอ้างอิงเวอร์ชัน PHP-FPM และ Apache btw
co flag
`apache` เป็นที่รู้จักกันในชื่อ `httpd` บน `CentOS` ดังนั้นสำหรับเวอร์ชัน apache / httpd: `$ sudo httpd -V` ให้ผลลัพธ์ (ท่ามกลางบันทึกอื่นๆ) `เวอร์ชันเซิร์ฟเวอร์: Apache/2.4.37 (centos)` โดยตัวจัดการ php คุณหมายถึง `/etc/httpd/conf.d/php.conf` (ซึ่งไม่ได้แก้ไขจากการติดตั้งเริ่มต้น และเพียงแค่ปฏิเสธทั้งหมดบน `.user.ini` และทำการกำหนดค่า php-fpm อื่น ๆ ควบคู่ไปกับการเพิ่ม DirectoryIndex ) หรืออย่างอื่น? DirectoryIndex ของฉัน (หลังจากการประมวลผลล่วงหน้า conf ทั้งหมด) คือ `index.html, index.php` ตามบันทึกข้อผิดพลาด (และ `grep -RiP of /etc/httpd` เห็นด้วย)
Jose Fernando Lopez Fernandez avatar
ใช่ ขอโทษ ฉันหมายถึง apache และ php-fpm คำสั่ง `DirectoryIndex` ไม่ใช้เครื่องหมายจุลภาคเพื่อแยกไฟล์ สิ่งที่คุณต้องมีคือ `DirectoryIndex index.html index.php` (ฉันไม่รู้ว่านี่คือสาเหตุของปัญหาจริงหรือไม่ แต่ฉันสงสัย) และใช่ ฉันแค่สงสัยว่าคำสั่ง `SetHandler ' สำหรับไฟล์ PHP ของคุณกำลังได้รับการประมวลผลจริงหรือไม่
co flag
ก๊อตชา. `$ sudo php-fpm -v` ให้ผล `7.2.24` SetHandler ของฉันคือ `SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"` ใน `/etc/httpd/conf.d/php.conf` ของฉัน (นอกเหนือจากนั้น การตั้งค่า `ProxyFCGIBackendType GENERIC` ไม่ได้แก้ไข แม้ว่าฉันจะไม่ได้คาดหวังว่ามันจะ...)
co flag
ฉันยอมแพ้และไปกับ nginx ซึ่งได้ผล โอ้ดี

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา