Điểm:0

Apache không thể phục vụ thư mục hoặc định vị tệp mặc dù tất cả chúng đều tồn tại với quyền chính xác

lá cờ co

Tôi đang sử dụng CentOS8, với một tiêu chuẩn bog (yum cài đặt httpd php) cài đặt apache và php.

Tôi đã có một cấu hình (/etc/httpd/conf.d/trip.mydomain.mytld.conf) giống như sau:

<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>

Như một kiểm tra vệ sinh:

$ ls -la /var/www/
...
drwxr-xr-x. 10 root apache 4096 5 tháng 10 23:01 chuyến đi
...

$ ls -la /var/www/chuyến đi
...
drwxr-xr-x. 7 gốc apache 4096 ngày 6 tháng 10 01:07 công khai
...

$ ls -la /var/www/chuyến đi/công khai
...
-rwxr-xr-x. 1 gốc apache 532 5 tháng 10 22:04 index.php
...

Để chắc chắn đó không phải là SELinux, tôi đã vô hiệu hóa nó và khởi động lại máy chủ nhưng không có kết quả...

Không có vấn đề gì tôi đã cố gắng, khi tôi tải trip.mydomain.mytld, tôi nhận được 403 Forbidden và nhật ký của tôi được điền bằng:

AH01276: Không thể phục vụ thư mục /var/www/tripwire/public: Không tìm thấy DirectoryIndex (index.html,index.php) phù hợp và chỉ thị thư mục do máy chủ tạo bị cấm bởi lệnh Options

Tôi có một dịch vụ khác đang chạy với cấu hình tương tự đang hoạt động và tôi không hiểu điều này có vấn đề gì -- nhưng tôi cho rằng đó là do cấu hình đầu tiên là "mặc định", mặc dù tôi không chắc đó có thể là vấn đề gì gây ra.

Trong trường hợp nó có liên quan, kết quả của việc chạy httpd -S là như sau:

Cấu hình máy chủ ảo:
*:443 là NameVirtualHost
    máy chủ mặc định auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld-le-ssl.conf:2)
    cổng 443 namevhost auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld-le-ssl.conf:2)
    cổng 443 namevhost tripwire.mydomain.mytld (/etc/httpd/conf.d/tripwire.mydomain.mytld-le-ssl.conf:2)
*:80 là một NameVirtualHost
    máy chủ mặc định auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld.conf:1)
    cổng 80 namevhost auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld.conf:1)
    cổng 80 namevhost tripwire.mydomain.mytld (/etc/httpd/conf.d/tripwire.mydomain.mytld.conf:1)
ServerRoot: "/etc/httpd"
Tài liệu chínhRoot: "/var/www/html"
Nhật ký lỗi chính: "/etc/httpd/logs/error_log"
Bản đồ viết lại Mutex: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex authdigest-client: using_defaults
Mutex lua-ivm-shm: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
Mutex ssl-cache: using_defaults
Mutex mặc định: dir="/etc/httpd/run/" cơ chế=default
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"
Xác định: DUMP_VHOSTS
Xác định: DUMP_RUN_CFG
Người dùng: tên = "Apache" id = 48
Nhóm: name="Apache" id=48
Jose Fernando Lopez Fernandez avatar
lá cờ sz
Bạn có thể thử đặt khối `Directory` bên ngoài khối `VirtualHost` và xem điều gì xảy ra không?
lá cờ co
Không có thay đổi quan sát trong hành vi. :(
Jose Fernando Lopez Fernandez avatar
lá cờ sz
Xin lỗi, tôi đã bỏ lỡ thông báo lỗi; đây là vấn đề của bạn: `Không tìm thấy Chỉ mục thư mục phù hợp (index.html,index.php) và chỉ mục thư mục do máy chủ tạo bị cấm bởi chỉ thị Tùy chọn` Vì vậy, đây không phải là vấn đề về quyền. Vì bạn có tệp `index.php`, bạn đã kiểm tra xem PHP đã được cấu hình đúng chưa?
lá cờ co
Theo những gì tôi có thể nói, nó được định cấu hình đúng, nhưng chắc chắn có thể tôi đã bỏ lỡ một kiểm tra... `$ sudo php-fpm -t` yields `[06-Oct-2021 02:22:38] THÔNG BÁO: tệp cấu hình / etc/php-fpm.conf kiểm tra thành công` và `php-fpm` đang chạy với tư cách người dùng `apache`
Jose Fernando Lopez Fernandez avatar
lá cờ sz
Tôi nghĩ rằng Apache có thể không biết rằng nó cần chuyển các yêu cầu tới trình quản lý quy trình nhanh. Bạn có thể tạo tệp `test.php` trong thư mục chung của máy chủ chỉ với `
Jose Fernando Lopez Fernandez avatar
lá cờ sz
Tuy nhiên, điều này thật kỳ lạ vì thông báo lỗi bao gồm cụ thể `index.php`, vì vậy có thể không phải như vậy, nhưng ít nhất nó sẽ loại bỏ một khả năng.
lá cờ co
Điều đó mang lại một lỗi khác ít nhất ...`[proxy_fcgi:error] [pid dddd:tid tttt] [máy khách aa.bb.cc.dd:ffff] AH01071: Gặp lỗi 'Tập lệnh chính không xác định\n'`
Jose Fernando Lopez Fernandez avatar
lá cờ sz
Tôi chưa bao giờ gặp sự cố đó, nhưng các câu hỏi khác đề xuất khởi động lại có thể hoạt động không? Bạn có thể thử điều đó?
lá cờ co
Khởi động lại (mọi thứ, php-fpm, apache ... và sau đó là toàn bộ máy) không khắc phục được gì.
Jose Fernando Lopez Fernandez avatar
lá cờ sz
Rất tiếc, được rồi. Được rồi để xem. Bạn có thể đăng các phiên bản của apache và httpd không? Và bạn có thể đăng trình xử lý PHP và cài đặt Directory Index từ cấu hình apache của mình không?
Jose Fernando Lopez Fernandez avatar
lá cờ sz
[Đây là câu trả lời](https://serverfault.com/questions/960558/mod-rewrite-on-debian-stretch-breaks-php7-0-fpm-with-ah01071-got-error-primary?rq=1 ) Tôi đang tham khảo các phiên bản PHP-FPM và Apache, btw
lá cờ co
`apache` được gọi là `httpd` trên `CentOS`, vì vậy đối với các phiên bản apache / httpd: `$ sudo httpd -V` mang lại (trong số các ghi chú khác) `Phiên bản máy chủ: Apache/2.4.37 (centos)`. Theo trình xử lý php, ý bạn là `/etc/httpd/conf.d/php.conf` (không được sửa đổi từ cài đặt mặc định và chỉ từ chối tất cả trên `.user.ini` và thực hiện cấu hình misc php-fpm cùng với việc thêm vào DirectoryIndex ) hay cái gì khác? DirectoryIndex của tôi (sau tất cả quá trình tiền xử lý conf) là `index.html, index.php` theo nhật ký lỗi (và `grep -RiP của /etc/httpd` đồng ý).
Jose Fernando Lopez Fernandez avatar
lá cờ sz
Vâng, xin lỗi, ý tôi là apache và php-fpm. Lệnh `DirectoryIndex` không sử dụng dấu phẩy để phân tách các tệp, tất cả những gì bạn cần là `DirectoryIndex index.html index.php` (Tôi không biết liệu đây có thực sự là nguyên nhân của sự cố hay không, nhưng tôi nghi ngờ điều đó). Và vâng, tôi chỉ tự hỏi liệu chỉ thị `SetHandler` của bạn cho các tệp PHP có thực sự được xử lý hay không
lá cờ co
hiểu rồi. `$ sudo php-fpm -v` mang lại `7.2.24`. SetHandler của tôi là `SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"` trong `/etc/httpd/conf.d/php.conf` của tôi. (Ngoài ra, cài đặt `ProxyFCGIBackendType GENERIC` không khắc phục được sự cố, mặc dù tôi không mong đợi điều đó xảy ra...)
lá cờ co
Tôi đã từ bỏ và sử dụng nginx, nó đã hoạt động. Ồ tốt.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.