Ich erhalte diese Fehlermeldung, wenn ich versuche, über einen Browser auf localhost zuzugreifen.
AH01630: client denied by server configuration
Ich habe die Berechtigungen meines Site-Ordners überprüft mit:
sudo chmod 777 -R *
Hier ist meine Konfigurationsdatei:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/user-name/www/myproject
<Directory />
Options FollowSymLinks
AllowOverride all
Allow from all
</Directory>
<Location />
Allow from all
Order Deny,Allow
</Location>
<Directory /home/user-name/www/myproject/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride all
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride all
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
chmod 777
ist eine sehr schlechte Angewohnheit, auch wenn sie (angeblich) nur in Beispielen verwendet wird.Antworten:
Wenn Sie Apache 2.4 verwenden
Sie müssen Zulassungs- und Verweigerungsregeln überprüfen
Überprüfen Sie http://httpd.apache.org/docs/2.4/upgrading.html#access
Die neue Richtlinie lautet Erforderlich :
2.2 Konfiguration:
2.4 Konfiguration:
Vergessen Sie auch nicht, den Apache-Server nach diesen Änderungen neu zu starten (
# service httpd restart
)quelle
DocumentRoot
und<Directory>
Pfade.Order allow,deny ...
und verwendetRequire all granted
. Es wird nicht funktionieren. Abhängig von Ihrer Version muss es nur eine davon sein. Das hat mich zunächst davon abgehalten, mein Problem zu lösen.Für alle Verzeichnisse schreiben
Require all granted
stattAllow from all
Aktualisieren
Wenn dies nicht funktioniert, entfernen Sie auch die folgende Zeile:
quelle
Order allow,deny
Leitung entfernt hatte .<Location /media> Require all granted </Location>
aufdefault-ssl.conf
meine CSS geladen werden. (Mein Problem war, dass die Anmeldeseite zugänglich war, aber weder CSS noch andere Mediendateien geladen wurden ...)Allow from All
ist in den Ruhestand gegangen, weil ... Gründe ...)Überprüfen Sie, ob der DocumentRoot-Pfad korrekt ist. Das kann diesen Fehler verursachen.
quelle
<Directory>
Block verwendete. Ich hatte auch einige Fallunterschiede. Nachdem ich diese beiden Werte-Kopien voneinander erstellt hatte (ohne den abschließenden Schrägstrich), funktionierte es perfekt.apache/logs/error.log
:AH00112: Warning: DocumentRoot [E:/xampp/htdocs/website/frontend/web] does not exist
Ich habe die gleichen Änderungen vorgenommen, die Ravisorg für OSX 10.10 Yosemite vorgeschlagen hat, um Apache auf Version 2.4 zu aktualisieren. Nachfolgend sind die Änderungen aufgeführt, die zu http.conf hinzugefügt wurden.
quelle
Das hat mich anderthalb Tage lang total verrückt gemacht, aber ich habe eine Lösung gefunden, wenn alle anderen Lösungen erfolglos ausprobiert wurden.
Dies ist für macOS.
Zu diesem Zeitpunkt hörte ich sofort auf, 403 Fehler zu bekommen, und alles begann wie erwartet zu funktionieren. Seltsame Sache ist, dass ich Apache nicht einmal neu starten musste, es hat einfach funktioniert. Ich denke, es hat sich selbst neu gestartet, als ich zu meinem lokalen Host ging. Ich weiß es ehrlich gesagt nicht, aber ich denke, das Problem ist, dass Apache nicht wirklich neu gestartet wird, wenn Apachectl neu gestartet wird, oder stoppen oder starten. Hoffe das hilft jemandem.
quelle
Das Problem liegt in VirtualHost, ist es aber wahrscheinlich nicht
Bestätigen Sie, dass Ihre Konfiguration korrekt ist. Hier ist das richtige Beispiel
quelle
<Directory ...> ... </Directory>
Zeilen funktionierte für mich, da ich einen Verzeichnispfad verwendete, der zuvor in Apache-Konfigurationen nicht definiert war.Wenn Sie das Fehlerprotokoll beenden und die Seite neu laden, sollten Sie weitere Informationen zum genauen Problem sehen.
Holen Sie sich die Umgebungsvariablen, damit $ {APACHE_LOG_DIR} tatsächlich funktioniert ...
Dann Schwanz und schau ...
quelle
LogLevel debug
dem VirtualHost hinzufügen , ist dies ein guter Rat, da dann Zeilen wie "Alle verweigert: verweigert" und "<AnforderungAny>: verweigert" angezeigt werden (dh viel nützlicher als nur "Client durch Serverkonfiguration verweigert"). wie es Ihnen tatsächlich sagt, welche Konfiguration!)Nachdem ich ein paar Stunden verbracht hatte, war ich selbst entschlossen.
Ich habe Apache / 2.4.7 (Ubuntu) über coookbook in vagrant vm installiert.
Die Datei /etc/apache2/apache2.conf enthält
<VirtualHost *:80>
standardmäßig kein Element.Ich habe zwei Änderungen vorgenommen, um dies zu erreichen
<VirtualHost *:80>
Optionsindizes hinzugefügt FollowSymLinks
AllowOverride all
Allow from all
dann habe ich endlich vm gebootet ..
quelle
Hat jemand darüber nachgedacht, dass der Wamp-Server die
httpd-vhosts.conf
Datei standardmäßig nicht enthält? Mein Ansatz ist es, den folgenden Hinweis zu entfernenin
httpd.conf
Datei. Das ist alles.quelle
conf/extra/httpd-vhosts.conf
Datei und in sie ersetzenRequire local
mitRequire all granted
in meinem Fall,
Ich benutze MacOS Mojave (Apache / 2.4.34). In den Einstellungen des virtuellen Hosts unter /etc/apache2/extra/httpd-vhosts.conf ist ein Problem aufgetreten. Nach dem Hinzufügen des erforderlichen Verzeichnis-Tags war mein Problem behoben.
Benötigen Sie alle gewährt
Ich hoffe, die vollständige Setup-Struktur des virtuellen Hosts wird Sie retten.
Alles, was Sie tun müssen, ist, den MainProjectFolderName durch Ihren genauen ProjectFolderName zu ersetzen.
quelle
Das hat mich verrückt gemacht. Endlich herausgefunden, was das Problem war: Ich habe direkte Pfade für das Fehlerprotokoll verwendet und sie waren falsch.
Warum gibt Apache eine vage (und falsche) Fehlermeldung aus? Verwenden Sie stattdessen eine korrekte und nützliche Fehlermeldung wie: Pfad für die ErrorLog-Direktive "/wrong/path/and/filename.log" ist ungültig.
Um dies zu beheben, stellen Sie sicher, dass Ihre Fehlerprotokollanweisungen ungefähr so aussehen:
quelle
Wenn Sie Apache 2.4 in WampServer unter Windows verwenden.
Sie müssen die Datei https-vhosts.conf im Editor öffnen .
Wenn Sie die obige Datei nicht finden können. Screenshot unten überprüfen
Im obigen Code Ersetzen
mit
Und speichere es. Starten Sie den Apache-Dienst neu und versuchen Sie es erneut.
quelle
Für mich hatte ich die Zulassungs- und Verweigerungsregeln basierend auf dem 2.4-Standard aktualisiert.
Dies führte jedoch immer noch dazu, dass ich denselben AH01630-Fehler erhielt. Ich habe einen anderen Thread gefunden und vorgeschlagen, Apache2 neu zu installieren. Irgendwie hat das geklappt! Wenn jemand erklären möchte, warum, wäre das hilfreich.
Gutschrift an: AH01630: Client wird von der Serverkonfiguration abgelehnt, erfordert jedoch, dass alle gewährten Werte festgelegt sind (Apache 2.4, CentOs).
quelle
Wenn Sie einen https-Host haben, vergessen Sie nicht, auch
Require all granted
Änderungen für die SSL-Konfiguration vorzunehmen.Manchmal ist es auch nützlich, die Berechtigungen als Apache-Benutzer zu überprüfen:
quelle
Für Wamp 3 (Apache 2.4) müssen Sie den Server
conf/extra/httpd-vhosts.conf
möglicherweise nicht nur wie in den anderen Antworten beschrieben online stellen, sondern auch in der Datei für virtuelle Hosts ersetzen
mit
Dies gilt, wenn
httpd.conf
Sie in habenquelle
Überprüfen Sie bei Verwendung von Ubuntu, ob das CGI-Modul aktiviert ist. Wenn nicht:
quelle
Stellen Sie sicher, dass benutzerspezifische Konfigurationen enthalten sind!
Wenn keine der anderen Antworten auf dieser Seite für Sie funktioniert, ist mir nach stundenlangem Hin und Her Folgendes begegnet.
Ich benutzte benutzerspezifischen Konfigurationen, mit
Sites
wie mein angegebenUserDir
in/private/etc/apache2/extra/httpd-userdir.conf
. Der Zugriff auf den Endpunkt war mir jedoch verbotenhttp://localhost/~jwork/
.Ich konnte sehen,
/var/log/apache2/error_log
dass der Zugang zu/Users/jwork/Sites/
blockiert wurde. Ich durfte jedoch über auf DocumentRoot zugreifenhttp://localhost/
. Dies deutete darauf hin, dass ich keine Rechte zum Anzeigen des~jwork
Benutzers hatte. Aber soweit ich konnte durch sagenps aux | egrep '(apache|httpd)'
undlsof -i :80
, Apache wurde für den laufendenjwork
Benutzer, so war etwas eindeutig nicht mit meiner Benutzerkonfiguration schreiben.Bei einem benannten Benutzer
jwork
war hier meine Konfigurationsdatei:/private/etc/apache2/users/jwork.conf
Diese Konfiguration ist vollkommen gültig. Ich stellte jedoch fest, dass meine Benutzerkonfiguration nicht enthalten war:
/private/etc/apache2/extra/httpd-userdir.conf
Beachten Sie, dass dies der Standardpfad zur Benutzerdir-Konfigurationsdatei ist, aber wie Sie unten sehen werden, ist er in konfigurierbar
httpd.conf
. Stellen Sie sicher, dass die folgenden Zeilen aktiviert sind:/private/etc/apache2/httpd.conf
quelle
Für diejenigen, die wie ich an diesem Fehler festgehalten haben und von oben nichts geholfen hat: Überprüfen Sie, ob der Problemordner von error.log tatsächlich auf Ihrem Server vorhanden ist. Meins wurde automatisch von Django an der falschen Stelle generiert (wurde dann mit statischer Wurzel durcheinander gebracht
manage.py collectstatic
). Habe keine Ahnung warum man Fehler nicht richtig benennen kann.quelle
Beachten Sie neben fehlenden
Order
undAllow
in anderen Antworten erwähnten Anweisungen, dass ein nicht übereinstimmender regulärer Ausdruck einerDirectoryMatch
Anweisung auch diesen Fehler verursachen kann.Wenn der angeforderte Pfad der folgende ist,
/home/user-foo1bar/www/myproject/
stimmt der Matcher nicht übereinDaher kann selbst eine gültige Zugriffskonfiguration diesen Fehler verursachen.
quelle
Eine obskure (gerade behandelte), aber mögliche Ursache hierfür ist eine interne mod_rewrite-Regel in der Hauptkonfigurationsdatei (nicht .htaccess), die in einen Pfad schreibt, der im Stammverzeichnis des Server-Dateisystems vorhanden ist. Angenommen, Sie haben ein
/media
Verzeichnis auf Ihrer Site und schreiben so etwas neu:Wenn Sie ein
/media
Verzeichnis im Stammverzeichnis Ihres Servers haben, wird versucht, das Verzeichnis neu zu schreiben (was zu dem Fehler führt, dass der Zugriff verweigert wird) und nicht das Verzeichnis in Ihrem Site-Verzeichnis, da das Stammverzeichnis des Dateisystems zuerst von mod_rewrite auf Existenz überprüft wird des ersten Verzeichnisses im Pfad vor Ihrem Site-Verzeichnis.quelle
Das Problem kann sein, dass sich die Direktive nicht unter <Verzeichnis> befindet
https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html#requiredirectives
Auf die Direktive kann in einem Abschnitt <Verzeichnis>, <Dateien> oder <Speicherort> sowie in .htaccess-Dateien verwiesen werden, um den Zugriff auf bestimmte Teile des Servers zu steuern. Der Zugriff kann basierend auf dem Client-Hostnamen oder der IP-Adresse gesteuert werden.
quelle
Ich habe eine andere, die für jemanden nützlich sein kann. Erhielt die gleiche Fehlermeldung nach dem Upgrade von PHP 5.6 => 7.0. Wir hatten die PHP-Upload-Einstellungen geändert und vergessen, sie nach dem Kopieren zu ändern. Obwohl ich zu diesem Zeitpunkt keine Bilder hochgeladen habe, weigerte sich Silverstripe (unser CMS), diesen Fehler zu speichern und zu werfen. Die Größe des Bild-Uploads wurde erhöht und es hat sofort funktioniert.
quelle
Für den Fall, dass dies jemandem beim Googeln hilft, hatte ich diese Fehlermeldung beim Versuch, auf eine SVG-Datei auf meinem Server zuzugreifen, z . B. https://example.com/images/file.svg . Andere Dateitypen schienen in Ordnung zu sein, nur SVG schlug fehl.
Ich
/etc/httpd
suchte nach Conf-Dateien und überprüfte jederequire all denied
Art von Konfiguration. Ich konnte einfach nicht herausfinden, welche Konfiguration diesen Effekt hatte.Ich habe LogLevel zum Debuggen in der VirtualHost-Konfiguration verwendet und konnte sehen, dass in der Protokollierung mod_authz_core angegeben wurde, dass "Alle verweigert" aktiviert ist:
Durch Blindtests habe ich die Datei in das Stammverzeichnis des Webstamms verschoben und festgestellt, dass ich dann unter https://example.com/file.svg darauf zugreifen kann. Daher ist sie nur im Ordner "images" fehlgeschlagen. Dies führte mich zu einer .htaccess-Datei im Bilderordner, von der ich keine Ahnung hatte, dass sie dort war.
Es stellt sich heraus, dass Zen Cart 1.5 eine images / .htaccess-Datei enthält, die Folgendes enthält:
Das war sehr ärgerlich und ich hoffe, dies könnte andere daran erinnern, .htaccess-Dateien auf jeder Ebene des Dateisystems zu überprüfen, was zu der Datei führt, auf die Sie nur schwer zugreifen können, falls diese Art von Tom-Dummheit vor sich geht.
quelle
Ich habe dieses Problem tatsächlich gelöst, indem ich den Verzeichniszugriff zum Eintrag: 80 hinzugefügt habe.
Bevor alle meine "Sicherheit" für mich erhalten, ist dies unter meinen besonderen Umständen kein Sicherheitsproblem.
Wenn Sie eine Remote-Ressource verwenden, würde ich empfehlen, stattdessen sicherzustellen, dass Ihre CURL-Anforderung über HTTPS / TLS erfolgt. Dieser Verzeichniseintrag wird dann über den 443-Port gesendet.
quelle
Dieser "Fehler" ist eigentlich das neue normale Verhalten von Apache 2.4. In meinem Fall hatte ich eine ganz bestimmte Regel, um den Zugriff auf Ordner oder Dateien zu verweigern, deren Name mit "." Beginnt. Daher musste ich eine Ausnahme für einen bestimmten öffentlichen Ordner festlegen, für den ein so ungerader Name erforderlich ist.
Für die Aufzeichnung lautet meine spezielle Rewrite-Regel:
RewriteRule "(?!\.trusted)(^|/)\." - [F]
Diese Regel [F] verhindert alles, was mit "." Beginnt. aber
.trusted
dank der Magie von Regex "?!" Negation.quelle
Da dieser Thread das erste ist, das bei der Suche nach dem genannten Fehler angezeigt wird, möchte ich eine weitere mögliche Ursache für diesen Fehler hinzufügen: Möglicherweise haben Sie
mod_evasive
aktiv und der Client, der diesen Fehler sieht, hat einfach die in Ihrem konfigurierten Grenzen überschrittenmod_evasive.conf
Dies ist insbesondere eine Ursache, die es wert ist, untersucht zu werden, wenn Sie plötzlich diesen Fehler für einen Client erhalten, der zuvor keine Probleme hatte und an dem sich nichts geändert hat.
(Wenn dies
mod_evasive
die Ursache ist, wird der Fehler von selbst behoben, wenn der Client vorübergehend nicht mehr versucht, auf die Site zuzugreifen. Dies kann jedoch ein Zeichen dafür sein, dass Sie zu enge Grenzwerte konfiguriert haben.)quelle