Ok, donc j’ai déjà installé deux hôtes virtuels et ils travaillent bien. ils hébergent tous les deux des projets Web simples et fonctionnent correctement avec http://project1
et http://project2
dans le navigateur.
Quoi qu'il en soit, je suis venu pour ajouter un autre vhost. J'ai modifié le fichier/etc/hosts avec 127.0.0.1 project3 et mis à jour le fichier httpd-vhosts.conf en copiant et en collant les entrées précédentes pour project2 et en modifiant le chemin du fichier.
J'ai vérifié toutes les autorisations de fichiers et de dossiers (en fait, j'ai copié et collé à partir de project2) et simplement mis un message "hello world" dans le fichier index.php.
Je reçois un message d'autorisation refusée 403 lors de l'accès à http://project3
Pourquoi est-ce que ceci, je peux juste comprendre quelle étape j'ai manqué comme tout semble être mis en place correctement.
Merci d'avance.
Regarde ça :
De plus, vous pouvez consulter le fichier error.log (généralement situé dans /var/log/Apache2/error.log), qui décrit précisément pourquoi vous obtenez l'erreur 403.
Enfin, vous voudrez peut-être redémarrer Apache pour vous assurer que toute la configuration est appliquée . Cela peut généralement être fait avec /etc/init.d/Apache2 restart
. Sur certains systèmes, le script s'appellera httpd. Juste comprendre.
La commande restorecon
fonctionne comme ci-dessous:
restorecon -v -R /var/www/html/
Je viens de résoudre ce problème après avoir lutté pendant quelques jours. Voici ce qui a fonctionné pour moi:
Tout d’abord, vérifiez votre fichier Apache error_log
et consultez le dernier message d’erreur.
Si cela dit quelque chose comme:
access to /mySite denied (filesystem path
'/Users/myusername/Sites/mySite') because search permissions
are missing on a component of the path
alors il y a un problème avec vos permissions de fichier. Vous pouvez les réparer en lançant ces commandes depuis le terminal:
$ cd /Users/myusername/Sites/mySite
$ find . -type f -exec chmod 644 {} \;
$ find . -type d -exec chmod 755 {} \;
Ensuite, actualisez l’URL de votre site Web (tel que http://localhost/mySite
) . Si vous obtenez toujours une erreur 403, et si votre Apache error_log
dit toujours la même chose, déplacez-vous progressivement vers le haut de votre autorisations de répertoire que vous allez. Vous pouvez le faire depuis le terminal en:
$ cd ..
$ chmod 755 mySite
Si nécessaire, continuez avec:
$ cd ..
$ chmod Sites
et si nécessaire
$ cd ..
$ chmod myusername
NE PAS montez plus loin que cela. Vous pourriez royalement endommager votre système… .. Si vous obtenez toujours l'erreur qui dit search permissions are missing on a component of the path
, je ne sais pas ce que vous devriez faire. Cependant, j'ai rencontré une erreur différente (celle ci-dessous) que j'ai corrigée comme suit:
Si votre error_log
dit quelque chose comme:
client denied by server configuration:
/Users/myusername/Sites/mySite
alors votre problème n'est pas avec vos permissions de fichiers, mais avec votre configuration Apache.
Notez que dans votre fichier httpd.conf
, vous verrez une configuration par défaut comme celle-ci (Apache 2.4+):
<Directory />
AllowOverride none
Require all denied
</Directory>
ou comme ceci (Apache 2.2):
<Directory />
Order deny,allow
Deny from all
</Directory>
NE PAS changer cela! Nous ne remplacerons pas ces autorisations globalement, mais plutôt dans votre fichier httpd-vhosts.conf
. Tout d'abord, assurez-vous toutefois que votre ligne vhost Include
dans httpd.conf
est sans commentaire . Ça devrait ressembler à ça. (Votre chemin exact peut être différent.)
# Virtual hosts
Include etc/extra/httpd-vhosts.conf
Ouvrez maintenant le fichier httpd-vhosts.conf
que vous venez de Include
d. Ajoutez une entrée pour votre page Web si vous n'en avez pas déjà une. Ça devrait ressembler a quelque chose comme ca. Les chemins DocumentRoot
et Directory
doivent être identiques et indiquer l’emplacement de votre fichier index.html
ou index.php
. Pour moi, cela se trouve dans le sous-répertoire public
.
Pour Apache 2.2:
<VirtualHost *:80>
# ServerAdmin [email protected]
DocumentRoot "/Users/myusername/Sites/mySite/public"
ServerName mysite
# ErrorLog "logs/dummy-Host2.example.com-error_log"
# CustomLog "logs/dummy-Host2.example.com-access_log" common
<Directory "/Users/myusername/Sites/mySite/public">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
Les lignes en disant
AllowOverride All
Require all granted
sont critiques pour Apache 2.4+. Sans cela, vous ne remplacerez pas les paramètres Apache par défaut spécifiés dans httpd.conf
. Notez que si vous utilisez Apache 2.2, ces lignes devraient plutôt indiquer
Order allow,deny
Allow from all
Cette modification a été une source de confusion majeure pour les utilisateurs de Google, tels que I, car le copier-coller de ces lignes Apache 2.2 ne fonctionnera pas dans Apache 2.4+, et les lignes Apache 2.2 sont encore couramment utilisées dans les anciens threads d'aide.
Une fois vos modifications enregistrées, redémarrez Apache . La commande dépend de votre système d’exploitation et de votre installation, cochez donc Google séparément si vous avez besoin d’aide.
J'espère que ça aidera quelqu'un d'autre!
PS: Si vous ne parvenez pas à trouver ces fichiers .conf
, essayez d’exécuter la commande find
, telle que:
$ find / -name httpd.conf
Le serveur peut avoir besoin d'une permission de lecture pour votre répertoire personnel et de .htaccess.
Vous pouvez essayer de désactiver selinux et essayez à nouveau en utilisant la commande suivante
setenforce 0