Ich habe gerade Mac OS X Yosemite frisch installiert. Ich habe Apache konfiguriert und chmodded "Benutzer/Benutzer/Sites" auf 755 gesetzt. Wenn ich localhost drücke, erhalte ich einen 403 Forbidden "You don't have permission to access / on this server"
. Dasselbe gilt für alle anderen Websites, die ich meiner hosts-Datei hinzufüge.
Ich habe versucht, Benutzerverzeichnisse gemäß der Hilfe von dieser Beitrag zu konfigurieren. Die Leute auf dieser MacRumors-Thread wissen, dass es ein Apache-Problem gibt, aber nicht viele Vorschläge gemacht haben.
Meine Verzeichnisberechtigungen sehen so aus
drwxr-xr-x 29 root wheel 1054 Aug 11 07:30 /
drwxr-xr-x 6 root admin 204 Aug 11 07:29 /Users/
drwxr-xr-x+ 26 zachshallbetter staff 884 Aug 11 11:57 /Users/zachshallbetter/
0: group:everyone deny delete
drwxr-xr-x 5 zachshallbetter staff 170 Aug 11 10:16 /Users/zachshallbetter/Sites
Kann jemand irgendwelche Vorschläge oder Hilfe anbieten? Hier sind Links zu meinen hosts und httpd.conf Dateien und Fehlerprotokolle als Referenz.
Sie möchten NICHT die gesamte Festplatte für den Webserverprozess öffnen. In der Tat Zeilen 215-217 von httpd.conf
sagen:
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
Apache 2.4 (OSX 10.10 Yosemite) hat eine andere Struktur als Apache 2.2 (OSX 10.9) für die Directory-Direktive im Modul mod_authz_core .
EDIT: Wenn Sie Apache vom START aus einrichten, folgen Sie bitte dieser Anleitung , um Apache und zu konfigurieren PHP unter OSX 10.10 Yosemite.
Angenommen, Sie haben mod_userdir.so
bereits aktiviert, Ihr Problem liegt in Ihrer Benutzer-CONF-Datei (/etc/Apache2/users/username.conf
) Folgendes bearbeiten (oder hinzufügen).
Apache 2.2:
<Directory "/Users/jnovack/Sites/">
Options Indexes MultiViews
AllowOverride All
# OSX 10.9 / Apache 2.2
Order from deny, allow
</Directory>
Apache 2.4
<Directory "/Users/jnovack/Sites/">
Options Indexes MultiViews
AllowOverride All
# OSX 10.10 / Apache 2.4
Require all granted
</Directory>
Bearbeiten Sie die Datei: /Private/etc/Apache2/httpd.conf
in Zeile 250 (in Yosemite) ändern:
Options FollowSymLinks Multiviews
zu:
Options FollowSymLinks Multiviews Indexes
dann im Terminal laufen:
Sudo apachectl restart
Dies könnte eine sehr späte Antwort sein, aber ich habe die meisten Stack Overflow-Lösungen befolgt. Keiner von ihnen hat mir aus verschiedenen Gründen geholfen. Also habe ich mein Gerät als neues Yosemite-Betriebssystem zurückgesetzt, damit dieser localhost auf Mac Yosemite funktioniert (auch mit Symlinks).
Schritte habe ich genau gemacht:
Sudo nano /etc/Apache2/httpd.conf
Kommentieren Sie die folgenden Zeilen:
#LoadModule php5_module libexec/Apache2/libphp5.so
to
LoadModule php5_module libexec/Apache2/libphp5.so
#LoadModule userdir_module libexec/Apache2/mod_userdir.so
to
LoadModule userdir_module libexec/Apache2/mod_userdir.so
#Include /private/etc/Apache2/extra/httpd-userdir.conf
to
Include /private/etc/Apache2/extra/httpd-userdir.conf
Speichern und beenden (Strg + X drücken Sie die Eingabetaste und drücken Sie die Y-Taste, um die Eingabe erneut zu bestätigen.)
Sudo nano /etc/Apache2/extra/httpd-userdir.conf
und kommentieren Sie die folgende Zeile in Zeile 16:
#Include /private/etc/Apache2/users/*.conf
to
Include /private/etc/Apache2/users/*.conf
Speichern und beenden (Strg + X drücken Sie die Eingabetaste und drücken Sie die Y-Taste, um die Eingabe erneut zu bestätigen).
Gehen Sie jetzt zum Apache-Benutzerordner, um zu überprüfen, ob Ihre Konfigurationsdatei vorhanden ist oder nicht
cd /etc/Apache2/users/
wenn sich in diesem Ordner keine Konfigurationsdatei befindet, erstellen Sie eine nach
Sudo nano /etc/Apache2/users/<**YOUR USERNAME**>.conf
Ersetzen Sie <YOUR USERNAME>
durch den Namen Ihres Computers (geben Sie whoami
im Terminal ein und geben Sie diesen Namen ein).
kopieren Sie nach dem Erstellen der .conf-Datei die folgenden Zeilen in diese Datei
<Directory "/Users/<YOUR USERNAME>/Sites/">
AddLanguage en .en
LanguagePriority en fr de
ForceLanguagePriority Fallback
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from localhost
Require all granted
</Directory>
speichern und schließen
Starten Sie jetzt Ihren Apache neu
Sudo apachectl restart
Gehen Sie jetzt zu Ihrem Browser und geben Sie localhost ein. Es sollte wie erwartet funktionieren.
Nur als Hinweis: Wenn es auch nach dem Neustart des Computers nicht funktioniert
erstellen Sie index.html als genau index.html.en, das Sie hier finden sollten:
open /Library/Webserver/Documents/
klicken Sie mit der rechten Maustaste auf index.html.de und kopieren Sie ihn in index.html, wobei das Original unverändert bleibt
versuchen Sie es erneut im Browser. Wenn Sie Erfolg haben, können Sie die duplizierte Datei löschen
Lassen Sie die Originaldatei index.html.en
dort, wo sie sich befindet, unbeschadet und unverletzt.
Ich bin mir nicht sicher, warum ich diesen mysteriösen Umweg nehmen musste - wahrscheinlich etwas lokales zu meiner Maschine, aber wenn Sie nach dem Befolgen der Anleitung oben Probleme haben, sollten Sie nachsehen, ob dies hilft.
SymLinks :
wenn Sie Erfolg haben, sollten Sie in Browser sehen
It works!
Erstellen Sie nun einen Symlink zu Ihrem Projekt.
ln -s <Path_to_your_Project(index_file)> <Path_to_webroot>
Wenn sich zum Beispiel der Projektordner im Ordner Dokumente befindet, verweisen Sie webroot auf Ihre Indexdatei mit
ln -s /Users/<YOUR USERNAME>/Documents/project/ /Library/Webserver/documents/projectlink
möglicherweise benötigen Sie die Berechtigung zum Erstellen eines Symlinks (obigen Befehl mit Sudo verwenden).
Konfigurieren Sie Apache so, dass er den Symlinks folgt (Dank Tomvon habe ich nicht genug Punkte, um Sie abzustimmen)
Sudo nano /private/etc/Apache2/httpd.conf
in Zeile 250 (in Yosemite) ändern:
Options FollowSymLinks Multiviews
zu:
Options FollowSymLinks Multiviews Indexes
dann im Terminal laufen:
Sudo apachectl restart
Gehen Sie jetzt zu localhost/projectlink
, um zu sehen, ob Ihre Projektindexdatei hier im Browser angezeigt wird.
Happy Coding ..
Der Rat in diesem Artikel hat mir geholfen.
Speziell der Abschnitt "Nur Yosemite":
Erstens gibt es eine Anweisung, mit der Sie Ihren Computer schützen können, indem Sie standardmäßig den Zugriff auf das gesamte Dateisystem verweigern. Ich werde Ihnen zeigen, wie Sie diese Direktive entfernen können, da ich das auf einer Maschine einfacher finde, die für die Entwicklung gedacht ist. Der Codeabschnitt erstreckt sich von Zeile 220 bis 223. Sie können einen Kommentar abgeben (vor jeder Zeile ein "#" einfügen) oder diesen Abschnitt einfach entfernen.
Und der Abschnitt ist ...
<Directory />
AllowOverride none
Require all denied
</Directory>
Hinweis:
Da andere mit mehr Details darauf eingegangen sind, kann die oben beschriebene Methode unsicher sein.
Es gibt 2 Möglichkeiten, warum Ihre localhost
verboten ist. Erstens kann es sein, dass Ihre Apache
-Einstellung nicht korrekt ist, und zweitens, weil Sie vhost
einstellen und auch localhost
vergessen
Sudo nano /etc/Apache2/extra/httpd-vhosts.conf
`
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/Users/username/Sites"
<Directory "Users/username/Sites">
Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all
</Directory>
</VirtualHost>
`
Sudo apachectl restart
es sollte klappen :)
Die Vorschläge konzentrieren sich möglicherweise auf Ihre eigene benutzerspezifische Konfiguration in Apache, diese Konfiguration wird jedoch standardmäßig nicht geladen.
Bearbeiten Sie die Konfiguration des Userdir-Moduls:
Sudo vi /etc/Apache2/extra/httpd-userdir.conf
Kommentieren Sie das Include der Benutzerverzeichnis-Konfigurationsdateien:
Include /private/etc/Apache2/users/*.conf
Stellen Sie sicher, dass Sie ein Benutzerverzeichnis konfiguriert haben, das unserem eigenen Benutzernamen entspricht:
Sudo vi /etc/Apache2/users/.conf
Stellen Sie sicher, dass Sie eine gute Konfiguration für Ihr Home-Verzeichnis haben:
DocumentRoot "/Users/<username>/Sites/"
<Directory "/Users/<username>/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>
Apache neu starten (Webserver)
Sudo apachectl neu starten
Überprüfen Sie Ihre Website!