Comment autoriser l'accès à un lien symbolique dans mon ~ / Sites / pour Apache sous Mac OS X Lion 10.7.2

12

J'ai besoin d'autoriser l'accès à un répertoire lié à sym dans ~ / Sites depuis mon Apache. J'ai mis en lien les répertoires comme celui-ci

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

Maintenant, chaque fois que je lance une demande GET, j'obtiens une réponse 403

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

Comment puis-je dire à Apache d'autoriser l'accès au répertoire de liens symboliques et comment puis-je dire à Apache de n'autoriser cela que pour les demandes déclenchées depuis localhost.

Toute aide est grandement appréciée.

Meilleures salutations

robertj

robertj
la source

Réponses:

10

Voici un article de blog que j'ai écrit lorsque j'essayais de comprendre comment faire exactement ce que vous essayez de faire.

  1. Activez le partage Web sur le MAC en allant dans Préférences système -> Partage -> Cochez Activer le partage Web
  2. Modifiez votre fichier username.conf situé dans / private / etc / apache2 / users et ajoutez la directive "FollowSymLinks":

    <Répertoire "/ Utilisateurs / votreNomUtilisateur / Sites /">
        Options Index MultiViews FollowSymLinks
        AllowOverride None
        Ordonnance autoriser, refuser
        Autoriser de tous
    </Directory>
    
  3. Modifiez le fichier /private/etc/apache2/httpd.conf et assurez-vous que la ligne sous «# hôtes virtuels» n'est pas commentée, comme ceci:

    Inclure /private/etc/apache2/extra/httpd-vhosts.conf
    
  4. Modifiez le fichier /private/etc/apache2/extra/httpd-vhosts.conf et ajoutez:

    <VirtualHost *: 80>  
        <Directory /Users/yourUserName/Sites/MyWebSite.com>
            Options + FollowSymlinks + SymLinksIfOwnerMatch
            AllowOverride All
        </Directory>
      DocumentRoot / Users / yourUserName / Sites / MyWebSite
      ServerName MyWebSite.local
    </VirtualHost>
    
  5. Modifiez le fichier / etc / hosts et ajoutez-le en haut:

    127.0.0.1 MyWebSite.local
    
  6. Créez un lien symbolique pour lier votre répertoire de code à celui du répertoire Sites.

    ln -s ~ / Code / MyWebSite ~ / Sites / MyWebSite
    
  7. Redémarrez apache

kelsmj
la source
1
Bienvenue sur Super User! Ce serait bien d'inclure les parties essentielles de la réponse ici, et de fournir le lien uniquement pour référence future.
slhck
Je suis passé de l'environnement xampp zend à la configuration par défaut de mac / apache et après un redémarrage, j'étais mort dans l'eau. L'étape 2 était la clé. Je vous remercie!
Shanimal
2

En fait, seules les 2 premières étapes de la réponse d'Emjay plus un redémarrage d'Apache sont nécessaires, voici ce qui a fonctionné pour moi:

  1. Activez le partage Web sur le MAC en allant dans Préférences système -> Partage -> Vérifier le partage Web activé

  2. Modifiez votre username.conffichier situé dans /private/etc/apache2/userset ajoutez la directive FollowSymLinks :

    <Directory "/Users/yourUserName/Sites/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. vérifiez votre config apache

    sudo apachectl -t

  4. redémarrer apache

    redémarrage sudo apachectl

Apache servira maintenant les liens symboliques sous votre Sitesrépertoire.

espinielli
la source
1

J'obtenais une 403 forbiddenerreur. Ce qui a résolu mon problème httpd-vhosts.conf, j'ai remplacé la configuration ci-dessous

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

avec

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

A fait de même pour toutes les balises d'emplacement. Il a résolu le problème d'autorisation.

VINUTHA
la source
0

Options FollowSymLinks dans httpd.conf pour le conteneur approprié

  1. Recherchez la chaîne DocumentRoot dans conf, rappelez-vous que c'est une valeur. Vérifiez le contenu de la <Directory "docroot here">...</Directory>section pour la chaîne Options. Si les options sont manquantes - ajoutez une chaîne Options FollowSymLinks, si elles existent mais n'ont pas FollowSymLinks - ajoutez ce paramètre afin d'avoir smth comme Options Indexes FollowSymLinks. Redémarrez Apache après avoir modifié la configuration. Résultat du test, écrivez-le ici

  2. Lire les documents Apache

Blaireau paresseux
la source
Salut, désolé - Cette réponse n'aide pas du tout.
robertj
Avez-vous essayé de le faire ? vous avez désactivé FollowSymLinks dans la configuration d'Apache, vous devez activer au niveau du site ou du répertoire afin d'utiliser les ressources liées
Lazy Badger
et vérifier les autorisations pour les fichiers à l'intérieur ~, la présence du fichier DirectoryIndex après cela: résoudre la tâche séquentiellement, vérifier toutes les possibilités
Lazy Badger
1
encore une fois - je ne peux rien faire de vos commentaires. Je suis un novice total concernant Apache (à part mon googler pendant les 6 dernières heures), je n'ai tout simplement aucune idée de ce qu'est le conteneur approprié . Ce qui serait vraiment utile est un exemple concret de configuration de httpd.conf et httpd-vhost.conf.
robertj
@robertj - C'est la solution à votre problème. Vous devez éditer ce fichier et le modifier en conséquence comme l'a dit @Lazy_Badger. Il doit être situé sous <Directory /usr/share/web>. Notez qu'après, vous devez redémarrer apache en utilisantsudo /usr/sbin/apachectl restart
Steven Lu
0

Parfois, cela se produit si:

  • Votre dossier source se trouve sur un système de fichiers NTFS
  • Si vous utilisez un dossier déjà créé, qui dispose d'autorisations différentes, probablement d'un propriétaire ou d'une installation précédente.

J'ai résolu ce problème en créant un nouveau dossier sur un système de fichiers ext4 et en créant un lien symbolique vers /var/www.

Aleksandr Leteckij
la source
En quoi cela est-il pertinent pour l'OP utilisant OSX?
JoshP