wake-up-neo.com

Apache localhost 403 Fehler mit Yosemite

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.

46

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

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

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

29
mahi

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. 

8
jody tate

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

  1. Sudo nano /etc/Apache2/extra/httpd-vhosts.conf
  2. Fügen Sie diesen Code hinzu

`

<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>  
  1. Speichern Sie es und starten Sie Ihren Apache neu

`

Sudo apachectl restart

es sollte klappen :)

2
Ade Yahya

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!

0
Huupke