Je reçois
[Mar 24 avr. 12:12:55 2012] [erreur] [client 127.0.0.1] client refusé par la configuration du serveur:/labs/Projects/Nebula/bin /
Ma structure de répertoire est la suivante (j'utilise Symfony 2, mais ma structure devrait être similaire à celle d'autres frameworks Web)
J'ai la configuration de vhosts comme:
<VirtualHost nebula:80>
DocumentRoot "/labs/Projects/Nebula/web/"
ServerName nebula
ErrorLog "/var/log/httpd/nebula-errors.log"
</VirtualHost>
<Directory "/labs/Projects/Nebula/">
Options All
AllowOverride All
Order allow,deny
Allow from 127.0.0 192.168.1 ::1 localhost
</Directory>
Je me demande quel est le problème et comment puis-je le résoudre?
OK j'utilise une mauvaise syntaxe, je devrais utiliser
Allow from 127.0.0.1
Allow from ::1
...
Apache 2.4.3 (ou peut-être un peu plus tôt) a ajouté une nouvelle fonctionnalité de sécurité qui entraîne souvent cette erreur. Vous verrez également un message de journal de la forme "client refusé par la configuration du serveur". La fonctionnalité requiert une identité d'utilisateur autorisé pour accéder à un répertoire. Il est activé par DEFAULT dans le fichier httpd.conf fourni avec Apache. Vous pouvez voir l'activation de la fonctionnalité avec la directive
Require all denied
Cela signifie essentiellement de refuser l'accès à tous les utilisateurs. Pour résoudre ce problème, supprimez la directive refusée (ou bien mieux), ajoutez la directive suivante aux répertoires auxquels vous souhaitez accorder l'accès:
Require all granted
un péché
<Directory "your directory here">
Order allow,deny
Allow from all
# New directive needed in Apache 2.4.3:
Require all granted
</Directory>
Dans Apache 2.4, l'ancienne syntaxe d'autorisation d'accès était obsolète et remplacée par un nouveau système utilisant Require.
Ce que vous voulez alors, c'est quelque chose comme ce qui suit:
<Directory "/labs/Projects/Nebula/">
Options All
AllowOverride All
<RequireAny>
Require local
Require ip 192.168.1
</RequireAny>
</Directory>
Cela autorisera les connexions en provenance de de l'hôte local ou d'adresses IP commençant par "192.168.1".
Il existe également un nouveau module disponible qui permet à Apache 2.4 de reconnaître l'ancienne syntaxe si vous ne souhaitez pas mettre à jour votre configuration immédiatement:
Sudo a2enmod access_compat
Pouvez-vous essayer de remplacer "Autoriser de 127.0.0 192.168.1 :: 1 localhost" par "Autoriser de tous". Si cela résout votre problème, vous devez être moins restrictif quant à l'endroit où le contenu peut être demandé.
Voici mon fichier d’hôte virtuel symfony 1.4 sur debian, qui fonctionne très bien.
<Directory /var/www/sf_project/web/>
Options All Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Si vous ne souhaitez pas restreindre l'accès à une plage d'adresses IP spécifique, par exemple localhost utilise ceci:
Allow from 127.0.0.0/8
Le mod_authz_Host est responsable du filtrage des plages d'adresses IP. Vous pouvez rechercher des informations détaillées dans ce document.
Mais peut-être que le problème pourrait être lié à une sorte de mauvaise configuration dans votre "Apache2.conf".
Sur quel système d'exploitation Apache est-il exécuté?
J'ai eu ce problème en utilisant Vesta CP et pour moi, le truc était de supprimer .htaccess et d'essayer d'accéder à nouveau à n'importe quel fichier.
Cela a eu pour résultat la régénération du fichier .htaccess et j'ai ensuite pu accéder à mes fichiers.
si vous rencontrez le
Allow from All
dans httpd.conf alors assurez-vous que nous avons
index.php
comme dans la ligne ci-dessous dans httpd.conf
DirectoryIndex index.html index.php
Dans mon cas, la clé était:
AllowOverride All
dans vhost definition. J'espère que ça aide quelqu'un.