2 votes

403 Forbidden pour la racine web sur Apache sur Mac OS X v10.7, mais peut accéder aux répertoires utilisateurs

Lorsque j'accède à http://localhost/ J'obtiens 403 Forbidden, mais si j'accède à http://localhost/~nom d'utilisateur il sert des pages. Ce que j'ai essayé :

  • Vérification des journaux d'erreurs
  • Remplacement par les fichiers de conf httpd originaux
  • Changer DocumentRoot pour mon répertoire utilisateur (après tout, cela devrait fonctionner si je peux accéder à ~username )

J'ai vu plus de 30 sites de questions-réponses qui indiquent tous que les gens ont des problèmes avec l'interdiction des répertoires d'utilisateurs. J'ai le problème inverse, et je m'arrache donc les cheveux ici.

3voto

Spiff Points 95683

J'ai rencontré le même problème (du moins les mêmes symptômes) aujourd'hui même. Dans mon cas, j'ai regardé /var/log/apache2/error_log et j'ai vu un tas d'erreurs comme celle-ci :

[Mon Mar 19 15:30:30 2012] [error] [client ::1] Directory index forbidden by Options directive: /var/empty/

Puis j'ai regardé dans /etc/apache2/httpd.conf et j'ai vu ces deux lignes

<IfDefine MACOSXSERVER>
DocumentRoot /var/empty

et puis plus tard, ces lignes

<IfDefine !MACOSXSERVER>
<IfDefine WEBSHARING_ON>
# Some comments were here
DocumentRoot "/Library/WebServer/Documents"

donc je me suis dit que d'une manière ou d'une autre MACOSXSERVER a été défini, alors qu'il ne devrait pas l'être, puisque cette machine est pas une machine serveur. Puis je me suis souvenu que je devais installer les outils d'administration Lion Server sur cette machine, et que la documentation d'Apple m'indiquait de le faire en installant le paquet Lion Server du Mac App Store sur ma machine d'administration, même si celle-ci n'était pas destinée à être une machine serveur. Peut-être que cela a réellement/accidentellement transformé ma machine admin en une machine Mac OS X Server. Pour vérifier, j'ai lancé :

$ sw\_vers
ProductName:    Mac OS X Server
ProductVersion: 10.7.3
BuildVersion:   11D50

Bien sûr, ma machine se présentait maintenant comme Mac OS X Server, alors que tout ce que j'avais voulu faire était d'installer les outils d'administration du serveur sur cette machine.

Pour en revenir au problème d'Apache, j'ai finalement trouvé /etc/apache2/ReadMe.txt qui explique les définitions d'Apache spécifiques à Mac OS X (lisez-le vous-même pour plus d'informations !), puis il dit ceci :

Ces paramètres IfDefine - MACOSXSERVER, WEBSHARING_ON, WEBSERVICE_ON - sont définis ou non par la plist launchd d'Apache, qui se trouve dans le répertoire suivant /System/Library/LaunchDaemons/org.apache.httpd.plist.

Donc, dans mon cas, j'ai choisi de le corriger en éditant dans ce launchd plist pour Apache à non défini MACOSXSERVER Je ne suis pas un serveur, et je veux contrôler ce genre de choses à partir de la case à cocher Partage Web dans le panneau Partage des Préférences Système, et non à partir de Server.app.

Donc, j'ai édité ce fichier :

/System/Library/LaunchDaemons/org.apache.httpd.plist

Pour supprimer ou commenter ces lignes, dans le fichier ProgramArguments le tableau :

<string>-D</string>
<string>MACOSXSERVER</string>

J'ai choisi de les commenter en plaçant des marqueurs de début/fin de commentaire SGML avant et après eux, comme ceci :

<!--
<string>-D</string>
<string>MACOSXSERVER</string>
-->

Après avoir enregistré mes modifications dans ce plist j'ai redémarré Apache sans problème :

sudo apachectl graceful

et c'était mieux !

J'ai peut-être dû recharger la page dans mon navigateur une ou deux fois si celui-ci avait mis en cache un résultat "403 Forbidden" pour la page à laquelle j'essayais d'accéder.

Même si ce n'est pas exactement la même cause que votre problème, j'espère que ma saga vous aidera à comprendre votre situation.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X