Ok, also habe ich vorher zwei virtuelle Hosts eingerichtet und sie arbeiten cool. Beide beherbergen einfache Webprojekte und funktionieren gut mit http://project1
und http://project2
im Browser.
Jedenfalls bin ich gekommen, um einen weiteren Vhost hinzuzufügen. Ich habe die Datei/etc/hosts mit 127.0.0.1 project3 bearbeitet und auch die Datei httpd-vhosts.conf durch Kopieren und Einfügen der vorherigen Einträge für project2 und Bearbeiten des Dateipfads aktualisiert.
Ich habe alle Datei- und Ordnerberechtigungen überprüft (tatsächlich habe ich von project2 kopiert und eingefügt) und einfach eine "Hallo Welt" -Meldung in die Datei index.php eingefügt.
Beim Zugriff auf http://project3
wird eine 403-verbotene Berechtigung verweigert.
Warum ist das so, ich kann nur herausfinden, welchen Schritt ich übersehen habe, da alles korrekt zu sein scheint.
Danke im Voraus.
Prüfe das :
Außerdem können Sie die Datei error.log (normalerweise unter /var/log/Apache2/error.log) anzeigen, in der beschrieben wird, warum Sie den 403-Fehler genau erhalten.
Schließlich möchten Sie vielleicht Apache neu starten, nur um sicherzustellen, dass die gesamte Konfiguration angewendet wird .. __ Dies kann im Allgemeinen mit /etc/init.d/Apache2 restart
erfolgen. Auf einigen Systemen heißt das Skript httpd. Einfach herausfinden.
Der Befehl restorecon
funktioniert wie folgt:
restorecon -v -R /var/www/html/
Ich habe dieses Problem gerade behoben, nachdem ich einige Tage lang Probleme hatte. Folgendes hat für mich funktioniert:
Überprüfen Sie zunächst Ihre Apache error_log
-Datei und sehen Sie sich die neueste Fehlermeldung an.
Wenn es so etwas sagt:
access to /mySite denied (filesystem path
'/Users/myusername/Sites/mySite') because search permissions
are missing on a component of the path
dann gibt es ein Problem mit Ihren Dateiberechtigungen. Sie können sie beheben, indem Sie diese Befehle vom Terminal aus ausführen:
$ cd /Users/myusername/Sites/mySite
$ find . -type f -exec chmod 644 {} \;
$ find . -type d -exec chmod 755 {} \;
Aktualisieren Sie dann die URL, an der sich Ihre Website befinden sollte (z. B. http://localhost/mySite
). Wenn Sie immer noch einen 403-Fehler erhalten und Ihr Apache error_log
immer noch dasselbe sagt, dann schrittweise Verschieben Sie Ihren Verzeichnisbaum nach oben und passen Sie die Verzeichnisberechtigungen an. Sie können dies vom Terminal aus tun:
$ cd ..
$ chmod 755 mySite
Falls erforderlich, fahren Sie fort mit:
$ cd ..
$ chmod Sites
und wenn nötig
$ cd ..
$ chmod myusername
NICHT weiter gehen. Sie könnten Ihr System königlich verwirren ... Wenn Sie immer noch die Fehlermeldung search permissions are missing on a component of the path
erhalten, weiß ich nicht, was Sie tun sollen. Es ist jedoch ein anderer Fehler aufgetreten (der folgende), den ich wie folgt behoben habe:
Wenn Ihr error_log
etwas sagt:
client denied by server configuration:
/Users/myusername/Sites/mySite
dann liegt das Problem nicht an den Dateiberechtigungen, sondern an der Apache-Konfiguration.
Beachten Sie, dass in Ihrer httpd.conf
-Datei eine Standardkonfiguration wie diese (Apache 2.4 und höher) angezeigt wird:
<Directory />
AllowOverride none
Require all denied
</Directory>
oder so (Apache 2.2):
<Directory />
Order deny,allow
Deny from all
</Directory>
NICHT ändere das! Wir werden diese Berechtigungen nicht global außer Kraft setzen, sondern stattdessen in Ihrer httpd-vhosts.conf
-Datei . Stellen Sie jedoch zunächst sicher, dass Ihre vhost Include
-Zeile in httpd.conf
uncommented ist. Es sollte so aussehen. (Ihr genauer Pfad kann unterschiedlich sein.)
# Virtual hosts
Include etc/extra/httpd-vhosts.conf
Öffnen Sie nun die httpd-vhosts.conf
-Datei, die Sie gerade Include
d haben. Fügen Sie einen Eintrag für Ihre Webseite hinzu, wenn Sie noch keinen haben. Es sollte ungefähr so aussehen. Die DocumentRoot
- und Directory
-Pfade sollten identisch sein und auf die Stelle zeigen, an der sich Ihre index.html
- oder index.php
-Datei befindet. Für mich liegt das im Unterverzeichnis public
.
Für Apache 2.2:
<VirtualHost *:80>
# ServerAdmin [email protected]
DocumentRoot "/Users/myusername/Sites/mySite/public"
ServerName mysite
# ErrorLog "logs/dummy-Host2.example.com-error_log"
# CustomLog "logs/dummy-Host2.example.com-access_log" common
<Directory "/Users/myusername/Sites/mySite/public">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
Die Zeilen sagen
AllowOverride All
Require all granted
sind für Apache 2.4+ kritisch. Ohne diese Einstellungen überschreiben Sie nicht die in httpd.conf
angegebenen Apache-Standardeinstellungen. Beachten Sie, dass bei Verwendung von Apache 2.2 stattdessen diese Zeilen angezeigt werden
Order allow,deny
Allow from all
Diese Änderung war für Googler dieses Problems eine große Verwirrung, wie z. B. ich, da das Kopieren und Einfügen dieser Apache 2.2-Zeilen in Apache 2.4+ nicht funktioniert und die Apache 2.2-Zeilen in älteren Hilfethreads noch häufig gefunden werden.
Nachdem Sie Ihre Änderungen gespeichert haben, starten Sie Apache neu. Der Befehl hierfür hängt von Ihrem Betriebssystem und der Installation ab. Wenn Sie also Hilfe benötigen, google das separat.
Ich hoffe das hilft jemand anderem!
PS: Wenn Sie Probleme haben, diese .conf
-Dateien zu finden, führen Sie den Befehl find
aus. Beispiel:
$ find / -name httpd.conf
Der Server benötigt möglicherweise Leseberechtigung für Ihr Basisverzeichnis und .htaccess darin
Sie können versuchen, Selinux zu deaktivieren, und es mit dem folgenden Befehl erneut versuchen
setenforce 0
In meinem Fall ist dies fehlgeschlagen, da die IP meines Quellservers auf dem Zielserver nicht auf die Whitelist gesetzt wurde.
Für z.B. Ich habe versucht, von einer Anwendung, die auf meinem Quellserver ausgeführt wird, auf https://prodcat.ref.test.co.uk zuzugreifen. Auf dem Quellserver finden Sie IP von ifconfig
Diese IP sollte in der Apache-Konfigurationsdatei des Zielservers als Whitelist aufgeführt werden. Wenn nicht, holen Sie sich die Whitelist.
Schritte zum Hinzufügen einer IP für das Whitelisting (wenn Sie auch den Zielserver steuern) ssh zum Apache-Server Sudo su - cd/usr/local/Apache/conf/extra (tatsächliche Verzeichnisse können je nach Konfiguration unterschiedlich sein)
Suchen Sie die Konfigurationsdatei für die Zielanwendung, z. prodcat-443.conf
RewriteCond %{REMOTE_ADDR} <YOUR Server's IP>
for e.g.
RewriteCond %{REMOTE_ADDR} !^192\.68\.2\.98
Hoffe das hilft jemandem