J'ai récemment essayé de configurer un serveur de test avec Apache. Le site doit être exécuté sous le domaine www.mytest.com
. J'ai toujours une erreur 403 Forbidden
. Je suis sur Ubuntu 10.10 Server Edition. La racine de la documentation se trouve sous le répertoire /var/www
. Voici mes paramètres:
Contenu de/var/www
ls -l /var/www/
total 12
drwxr-xr-x 2 root root 4096 2011-08-04 11:26 mytest.com
-rwxr-xr-x 1 root root 177 2011-07-25 16:10 index.html
Contenu du fichier hôte sur le serveur (avec IP 192.168.2.5)
cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 americano
192.168.2.5 americano.mytest.com www.mytest.com
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
configuration du site
<VirtualHost *>
ServerAdmin [email protected]
ServerName www.mytest.com
ServerAlias mytest.com
DocumentRoot "/var/www/mytest.com"
ErrorLog /var/log/Apache2/mytest-error_log
CustomLog /var/log/Apache2/mytest-access_log combined
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/mytest.com">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Je n'ai pas de fichier .htaccess
dans la racine de la documentation. Les autorisations sont définies correctement (lisibles par www-data).
Si je tape l'adresse IP à partir de mon bureau, le site s'affiche correctement. J'ai changé le fichier hosts sur mon bureau pour qu'il pointe www.mytest.com
sur l'IP du serveur. Quand je l'utilise, j'obtiens 403
. Étant donné que de nombreuses fonctions de ce site sont sensibles au nom de site, je dois pouvoir accéder au site par le nom de domaine.
Une autre chose géniale est que, même si tous les fichiers journaux sont créés correctement, ils ne possèdent aucune information concernant cette erreur.
Je suis coincé. Quelqu'un peut aider?
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é nécessite une identité d'utilisateur 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>
Pour Apache Ubuntu 2.4.7, j'ai enfin trouvé que vous deviez répertorier votre hôte virtuel dans Apache2.conf.
# access here, or in any related virtual Host.
<Directory /home/gav/public_html/>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Cela peut être un problème d'autorisations.
chaque chemin parent vers la racine du document virtuel doit être lisible, enregistrable et exécutable par l'utilisateur httpd du serveur Web.
selon cette page à propos des erreurs Apache 403.
Puisque vous utilisez Allow from all
, votre commande ne devrait pas avoir d’importance, mais vous pouvez essayer de la basculer sur Deny,Allow
pour définir le comportement par défaut sur "autorisant".
Déplacez la clause Directory hors de virtualhost et mettez-la avant de déclarer virtualhost.
M'a aussi rendu fou pendant longtemps. Je ne sais pas pourquoi C'est une chose Debian.
J'avais le même problème avec un hôte virtuel sur Ubuntu 14.04
Pour moi, la solution suivante a fonctionné:
http://ubuntuforums.org/showthread.php?t=2185282
Il suffit d'ajouter une balise <Directory >
à /etc/Apache2/Apache2.conf
Le problème était que l'autorisation d'accès au fichier était erronée.
J'ai changé les autorisations du répertoire et cela a fonctionné.
Je viens de passer plusieurs heures sur ce problème stupide
Tout d'abord, modifiez les autorisations en utilisant ceci dans le terminal
find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +
Je ne sais pas quelle est la différence entre 664 et 775 J'ai fait les deux 775 comme ceci Aussi htdocs a besoin du chemin du répertoire par exemple pour moi c'était
/usr/local/Apache2/htdocs
find htdocs -type f -exec chmod 775 {} + -o -type d -exec chmod 775 {} +
Ceci est l'autre chose stupide aussi
assurez-vous que votre lien src d'image est votre nom de domaine par exemple
src="http://www.fakedomain.com/images/photo.png"
Assurez-vous d'avoir
EnableSendfile off in httpd.conf file
EnableMMAP off in httpd.conf file
Vous éditez ceux qui utilisent pico dans le terminal
J'ai également créé un répertoire pour les images afin que, lorsque vous tapez dans la barre d'adresse du navigateur domainname.com/images, vous obteniez une liste des photos pouvant être téléchargées et devant être téléchargées avec succès pour indiquer que les fichiers d'image fonctionnent correctement.
<Directory /usr/local/Apache2/htdocs/images>
AddType images/png .png
</Directory>
Et ce sont les solutions que j'ai essayées, maintenant j'ai des images qui fonctionnent ... oui !!!
Sur le (s) prochain (s) problème (s)
Si vous avez tout fait correctement, donnez simplement le répertoire personnel de l’autorisation comme suit:
Sudo chmod o+x $HOME
ensuite
Sudo systemctl restart Apache2