So erlauben Sie den Zugriff auf einen symbolischen Link in my ~ / Sites / für Apache unter Mac OS X Lion 10.7.2


12

Ich muss von meinem Apache aus den Zugriff auf ein mit Sym verknüpftes Verzeichnis in ~ / Sites zulassen. Ich habe die Verzeichnisse wie folgt verknüpft

ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here

Wenn ich jetzt eine GET-Anfrage starte, erhalte ich eine 403-Antwort

curl http://localhost/~username/source-link-here/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /~username/source-link-here
on this server.</p>
...

Wie kann ich Apache anweisen, Zugriff auf das verknüpfte Verzeichnis zuzulassen, und wie kann ich Apache anweisen, dies nur für Anforderungen zuzulassen, die von localhost ausgelöst werden.

Jede Hilfe wird sehr geschätzt.

Freundliche Grüße

robertj

Antworten:


10

Hier ist ein Blog-Beitrag, den ich geschrieben habe, als ich versucht habe, herauszufinden, wie genau das zu tun ist, was Sie versuchen.

  1. Aktivieren Sie die Webfreigabe auf dem MAC, indem Sie zu Systemeinstellungen -> Freigabe -> Aktivieren der Option Webfreigabe aktivieren gehen
  2. Bearbeiten Sie Ihre Datei username.conf in / private / etc / apache2 / users und fügen Sie die Direktive "FollowSymLinks" hinzu:

    <Verzeichnis "/ Users / yourUserName / Sites /">
        Optionen Indizes MultiViews FollowSymLinks
        AllowOverride Keine
        Bestellung erlauben, verweigern
        Erlaube von allen
    </ Directory>
    
  3. Bearbeiten Sie die Datei /private/etc/apache2/httpd.conf und stellen Sie sicher, dass die Zeile unter "# Virtuelle Hosts" nicht auskommentiert ist:

    Fügen Sie /private/etc/apache2/extra/httpd-vhosts.conf hinzu
    
  4. Bearbeiten Sie die Datei /private/etc/apache2/extra/httpd-vhosts.conf und fügen Sie Folgendes hinzu:

    <VirtualHost *: 80>  
        <Verzeichnis /Users/yourUserName/Sites/MyWebSite.com>
            Optionen + FollowSymlinks + SymLinksIfOwnerMatch
            AllowOverride All
        </ Directory>
      DocumentRoot / Users / yourUserName / Sites / MyWebSite
      Servername MyWebSite.local
    </ VirtualHost>
    
  5. Bearbeiten Sie die Datei / etc / hosts und fügen Sie diese oben hinzu:

    127.0.0.1 MyWebSite.local
    
  6. Erstellen Sie einen Symlink, um Ihr Code-Verzeichnis mit einem im Sites-Verzeichnis zu verknüpfen.

    ln -s ~ / Code / MyWebSite ~ / Sites / MyWebSite
    
  7. Starten Sie Apache neu


1
Willkommen bei Super User! Es wäre schön , die wesentlichen Teile der Antwort hier aufzunehmen und den Link nur zum späteren Nachschlagen bereitzustellen.
Slhck

Ich wechselte von der xampp zend-Umgebung zum Standard-Mac / Apache-Setup und war nach einem Neustart tot im Wasser. Schritt 2 war der Schlüssel. Vielen Dank!
Shanimal

2

Tatsächlich sind nur die ersten beiden Schritte von Emjays Antwort sowie ein Neustart des Apache erforderlich. Folgendes hat bei mir funktioniert:

  1. Aktivieren Sie Web Sharing auf dem MAC durch zu gehen System Prefrences -> Freigabe -> prüfen aktiviert Web Sharing

  2. Bearbeiten Sie Ihre username.confDatei in /private/etc/apache2/usersund fügen Sie die FollowSymLinks- Direktive hinzu:

    <Directory "/Users/yourUserName/Sites/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. Überprüfen Sie Ihre Apache-Konfiguration

    sudo apachectl -t

  4. Starten Sie Apache neu

    sudo apachectl Neustart

Jetzt wird Apache die symbolischen Links unter Ihrem SitesVerzeichnis bereitstellen .


1

Ich habe einen 403 forbiddenFehler bekommen . Was mein Problem gelöst hat, ist httpd-vhosts.conf, dass ich die folgende Konfiguration ersetzt habe

<Location "/modulename">
  Order allow,deny
  Allow from all
</Location>

mit

<Location "/modulename">
  Require all granted
</Location>

Das Gleiche gilt für alle Location-Tags. Das Problem mit der Berechtigung wurde behoben.


0

Options FollowSymLinks in httpd.conf für den entsprechenden Container

  1. Suchen Sie die DocumentRoot-Zeichenfolge in conf und merken Sie sich den Wert. Überprüfen Sie den Inhalt des <Directory "docroot here">...</Directory>Abschnitts auf die Zeichenfolge Optionen. Wenn Optionen fehlen - Zeichenfolge hinzufügen Options FollowSymLinks, falls vorhanden, aber keine FollowSymLinks - fügen Sie diesen Parameter hinzu, um smth like zu erhalten Options Indexes FollowSymLinks. Starten Sie Apache neu, nachdem Sie die Konfiguration geändert haben. Testergebnis, schreiben Sie es hier

  2. Lesen Sie die Apache-Dokumente


Hallo, sorry - Diese Antwort hilft überhaupt nicht.
Robertj

Hast du versucht , tun es? Wenn Sie FollowSymLinks in der Apache-Konfiguration deaktiviert haben, müssen Sie diese auf Site- oder Verzeichnisebene aktivieren, um symlinkierte Ressourcen verwenden zu können
Lazy Badger

und überprüfen Sie die Berechtigungen für Dateien in ~, Vorhandensein der DirectoryIndex-Datei danach: Lösen Sie die Aufgabe nacheinander und überprüfen Sie alle Möglichkeiten
Lazy Badger

1
wieder - ich kann aus Ihren Kommentaren nichts machen. Ich bin ein totaler Neuling in Bezug auf Apache (abgesehen von meinem Googeln in den letzten 6 Stunden). Ich habe einfach keine Ahnung, was der passende Container ist. Was wirklich hilfreich wäre, ist ein konkretes Beispiel für die Konfiguration von httpd.conf und httpd-vhost.conf.
Robertj

@robertj - Dies ist die Lösung für Ihr Problem. Sie müssen diese Datei bearbeiten und entsprechend ändern, wie @Lazy_Badger sagte. Es sollte sich unter befinden <Directory /usr/share/web>. Beachten Sie, dass Sie danach Apache mitsudo /usr/sbin/apachectl restart
Steven Lu

0

Manchmal passiert es, wenn:

  • Ihr Quellordner befindet sich in einem NTFS-Dateisystem
  • Wenn Sie einen bereits erstellten Ordner verwenden, der über andere Berechtigungen verfügt, wahrscheinlich von einem Vorbesitzer oder einer Installation.

Ich habe dieses Problem behoben, indem ich einen neuen Ordner in einem ext4-Dateisystem erstellt und einen symbolischen Link zu erstellt habe /var/www.


Wie ist dies für das OP unter OSX relevant?
JoshP
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.