snippets · config

Warum bekomme ich 403, obwohl die Datei existiert und lesbar aussieht?

Die Datei liegt im DocumentRoot und hat 644, trotzdem liefert Apache 403 Forbidden. Dateirechte allein erklären den Zugriff nicht.

Drei Ebenen unterscheiden

1. Dateisystempfad

Apache braucht nicht nur Leserecht auf der Datei, sondern Execute/Traverse-Recht auf allen Elternverzeichnissen:

namei -l /voller/pfad/zur/datei

2. Apache-Autorisierung

Ein <Directory>-Block oder .htaccess kann den Zugriff explizit verweigern:

<Directory "/var/www/htdocs">
    Require all granted
</Directory>

Require all denied bewirkt das Gegenteil. Auch Rewrite-Regeln mit [F] erzeugen 403.

3. Falscher VirtualHost / falscher Pfad

apachectl -S

Prüfe, welcher VirtualHost für Hostname und Port tatsächlich gewählt wird und welcher DocumentRoot dazugehört.

Der schnellste Hinweis steht oft im Error Log

Ein 403 ist nur die HTTP-Zusammenfassung. Das Apache-Error-Log unterscheidet meist deutlich zwischen Dateisystemrechten, Authorization und Konfiguration.

Die sinnvolle Reihenfolge ist deshalb: Error Log → tatsächlicher vHost → Pfadrechte → Require/Rewrite, nicht pauschal chmod.

Quelle: https://httpd.apache.org/docs/2.4/howto/access.html