Puncte:0

Apache nu poate servi directorul sau localiza fișierele, chiar dacă toate există cu permisiunile corecte

drapel co

eu folosesc CentOS8, cu un standard de mlaștină (yum instalează httpd php) instalarea apache și php.

Am o configurație (/etc/httpd/conf.d/trip.mydomain.mytld.conf) care arată astfel:

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

Ca un control al minții:

$ ls -la /var/www/
...
drwxr-xr-x. 10 apache root 4096 Oct 5 23:01 trip
...

$ ls -la /var/www/trip
...
drwxr-xr-x. 7 apache root 4096 Oct 6 01:07 public
...

$ ls -la /var/www/trip/public
...
-rwxr-xr-x. 1 apache root 532 Oct 5 22:04 index.php
...

Pentru a fi sigur că nu a fost SELinux, l-am dezactivat și am repornit serverul fără niciun rezultat...

Indiferent ce am încercat, când încărc trip.mydomain.mytld, primesc un 403 Interzis, iar jurnalele mele sunt populate cu:

AH01276: Nu se poate servi directorul /var/www/tripwire/public: Nu s-a găsit nicio potrivire DirectoryIndex (index.html,index.php) și indexul directorului generat de server este interzis de directiva Opțiuni

Am un alt serviciu care rulează cu o configurație similară care funcționează și sunt nedumerit cu privire la ce este în neregulă cu asta -- dar presupun că se datorează faptului că prima configurație este „implicit”, deși nu sunt sigur ce probleme ar putea fi provocând.

În cazul în care este relevant, rezultatul alergării httpd -S este după cum urmează:

Configurare VirtualHost:
*:443 este un NameVirtualHost
    server implicit auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld-le-ssl.conf:2)
    portul 443 namevhost auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld-le-ssl.conf:2)
    portul 443 namevhost tripwire.mydomain.mytld (/etc/httpd/conf.d/tripwire.mydomain.mytld-le-ssl.conf:2)
*:80 este un NameVirtualHost
    server implicit auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld.conf:1)
    portul 80 namevhost auth.mydomain.mytld (/etc/httpd/conf.d/auth.mydomain.mytld.conf:1)
    portul 80 namevhost tripwire.mydomain.mytld (/etc/httpd/conf.d/tripwire.mydomain.mytld.conf:1)
ServerRoot: „/etc/httpd”
DocumentRoot principal: „/var/www/html”
ErrorLog principal: „/etc/httpd/logs/error_log”
Mutex rewrite-map: 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 implicit: dir="/etc/httpd/run/" mecanism=default
Mutex cache-socache: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex watchdog-callback: using_defaults
Mutex proxy-balancer-shm: using_defaults
Fișier Pid: „/etc/httpd/run/httpd.pid”
Definiți: DUMP_VHOSTS
Definiți: DUMP_RUN_CFG
Utilizator: name="apache" id=48
Grup: name="apache" id=48
Jose Fernando Lopez Fernandez avatar
drapel sz
Puteți încerca să puneți blocul `Directory` în afara blocului `VirtualHost` și să vedeți ce se întâmplă?
drapel co
Nicio schimbare observată în comportament. :(
Jose Fernando Lopez Fernandez avatar
drapel sz
Îmi pare rău, am ratat mesajul de eroare; iată problema ta: `Nu s-a găsit nicio potrivire DirectoryIndex (index.html,index.php) și indexul de director generat de server este interzis de directiva Opțiuni` Deci nu este o problemă de permisiuni. Deoarece aveți un fișier `index.php`, ați verificat dacă PHP a fost configurat corect?
drapel co
Din câte îmi dau seama, este configurat corect, dar este cu siguranță posibil să fi ratat o verificare... `$ sudo php-fpm -t` produce `[06-Oct-2021 02:22:38] NOTĂ: fișier de configurare / testul etc/php-fpm.conf are succes`, iar `php-fpm` rulează ca utilizator `apache`
Jose Fernando Lopez Fernandez avatar
drapel sz
Cred că Apache ar putea să nu știe că trebuie să transmită cererile către managerul de proces rapid. Puteți crea un fișier `test.php` în directorul public al serverului dvs. doar cu `
Jose Fernando Lopez Fernandez avatar
drapel sz
Este ciudat, totuși, pentru că mesajul de eroare include în mod specific `index.php`, deci s-ar putea să nu fie așa, dar cel puțin va elimina o posibilitate.
drapel co
Asta a produs o eroare diferită cel puțin...`[proxy_fcgi:error] [pid dddd:tid tttt] [client aa.bb.cc.dd:ffff] AH01071: A apărut eroarea „Scriptul principal necunoscut\n”`
Jose Fernando Lopez Fernandez avatar
drapel sz
Nu am avut niciodată această problemă, dar alte întrebări sugerează că ar putea funcționa o repornire? Poți încerca asta?
drapel co
O repornire (din toate, php-fpm, apache... și apoi întreaga mașină) nu a remediat nimic.
Jose Fernando Lopez Fernandez avatar
drapel sz
Da, bine. Ei bine, să vedem. Puteți posta versiunile de apache și httpd? Și puteți posta setările pentru handler PHP și DirectoryIndex și din configurația Apache?
Jose Fernando Lopez Fernandez avatar
drapel sz
[Acesta este răspunsul](https://serverfault.com/questions/960558/mod-rewrite-on-debian-stretch-breaks-php7-0-fpm-with-ah01071-got-error-primary?rq=1 ) Mă refer la versiunile PHP-FPM și Apache, btw
drapel co
`apache` este cunoscut ca `httpd` pe `CentOS`, deci pentru versiunile apache / httpd: `$ sudo httpd -V` a dat (printre alte note) `Versiune server: Apache/2.4.37 (centos)`. Prin php handler vrei să spui `/etc/httpd/conf.d/php.conf` (care este nemodificat de la instalarea implicită și doar neagă totul pe `.user.ini` și face diverse configurații php-fpm împreună cu adăugarea la DirectoryIndex) sau altceva? DirectoryIndexul meu (după toate preprocesarea conf) este `index.html, index.php` conform jurnalelor de erori (și un `grep -RiP al /etc/httpd` este de acord).
Jose Fernando Lopez Fernandez avatar
drapel sz
Da, îmi pare rău, mă refeream la apache și php-fpm. Directiva `DirectoryIndex` nu folosește virgule pentru a separa fișierele, tot ce aveți nevoie este `DirectoryIndex index.html index.php` (nu știu dacă aceasta este de fapt cauza problemei, dar mă îndoiesc). Și da, mă întreb doar dacă directiva ta „SetHandler” pentru fișierele PHP este de fapt procesată
drapel co
Am inteles. `$ sudo php-fpm -v` a dat `7.2.24`. SetHandler-ul meu este `SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"` în `/etc/httpd/conf.d/php.conf`. (Deoparte, setarea „ProxyFCGIBackendType GENERIC” nu a remediat, deși nu mă așteptam să...)
drapel co
Am renunțat și am mers cu nginx, care a funcționat. Oh bine.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.