Apache ne fonctionne pas avec le dossier Sites utilisateur sur macOS 10.13 High Sierra


8

J'ai suivi ce guide pour configurer Apache sur High Sierra: https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-macos-sierra/

Je l'ai utilisé pour l'installer sur Sierra.

Mais quand je vais à http://localhost/~scott/j'obtiens "Interdit. Vous n'avez pas la permission d'accéder à / ~ scott / sur ce serveur."

Une suggestion sur cette question similaire: localhost / userdir sur macOS High Sierra est de charger des vhosts. Ce que j'ai essayé, mais toujours "Interdit".

Quelque chose a-t-il changé entre Sierra et High Sierra qui empêcherait Apache de travailler avec les dossiers des sites utilisateur?


Essayez apachectl configtestet mettez à jour la sortie
Rakesh kumar

RetoursSyntax OK
sfyfedotcom


"Interdit. Vous n'êtes pas autorisé à accéder à / ~ scott / sur ce serveur."
sfyfedotcom

Réponses:


8

Cela a fonctionné pour moi lorsque j'ai rencontré le même problème.

Veuillez vérifier le fichier "/private/etc/apache2/extra/httpd-userdir.conf".

changement

#Include /private/etc/apache2/users/*.conf

à

Include /private/etc/apache2/users/*.conf

et redémarrez apache.

De: /programming/39631351/apache-localhost-403-forbidden-with-macos-sierra


Cette ligne /private/etc/apache2/extra/httpd-userdir.confest déjà non commentée, à partir du lien d'instructions que j'ai suivi.
sfyfedotcom

avez-vous redémarré apache "sudo apachectl restart"
Robert

Oui. J'ai fait toutes les modifications apportées aux fichiers de configuration d'Apache
sfyfedotcom

4

Pour autoriser l'accès au répertoire Sites, vous devez ajouter ce qui suit à /etc/apache2/httpd.conf:

<DirectoryMatch "/Users/.*/Sites">
  Require all granted
</DirectoryMatch>

La configuration par défaut d'Apache est définie sur refusé le /, vous devez donc autoriser explicitement l'accès à tout.


Ajout et redémarrage d'apache.
Cela

J'ai eu le même problème. J'obtenais le "Ça marche!" sur locahost, mais n'a pas pu faire fonctionner les répertoires utilisateur. La résolution de la règle DirectoryMatch comme celle-ci l'a résolu. Merci!
Karra

4

Juste pour approfondir la réponse de Diogo Lima.

Avec la mise à niveau vers High Sierra, Apple a fait des copies de vos paramètres Apache précédents et a ajouté un ~ précédent aux fichiers * .conf dans les dossiers / etc / apache2 et / etc / apache2 / extra. Si vous utilisez des hôtes virtuels ou des hôtes virtuels SSL, vous devrez également déplacer vos versions précédentes pour ces fichiers .conf.

mv /etc/apache2/extra/httpd-vhosts.conf~previous /etc/apache2/extra/httpd-vhosts.conf
mv /etc/apache2/extra/httpd-ssl.conf~previous /etc/apache2/extra/httpd-ssl.conf

Il s'agissait d'une nouvelle installation de High Sierra, donc je n'avais aucun fichier de configuration précédent
sfyfedotcom

Donc, juste pour clarifier, vous l'avez fait travailler sur Sierra, mais vous n'avez pas fait de mise à niveau, mais plutôt une installation complète et propre? Je me souviens quand j'ai configuré le fonctionnement de Sierra que j'ai créé un lien symbolique de mon dossier Sites vers le dossier / Library / WebServer / Documents et que je m'étais assuré que je m'étais accordé la permission (lecture et écriture). Étant donné que cela ne semble être qu'un problème d'autorisations à ce stade, avez-vous créé le lien symbolique et modifié les autorisations?
James Martin

Oui c'est correct. Je fais toujours une installation propre des nouvelles versions de macOS. Je sais que je peux le faire, mais je veux conserver les deux /Library/WebServer/Documentset en Users/username/Sitestant qu'endroits séparés pour les projets Web, car c'est ce que j'ai pu faire sur macOS au cours des 10 dernières années.
sfyfedotcom

Il semble donc que vous auriez besoin d'exécuter deux instances distinctes d'Apache sur la même machine, mais cela ne va-t-il pas à l'encontre de l'objectif d'équilibrage de charge des sites Web qu'Apache propose désormais lorsqu'il est exécuté à partir d'une seule instance? La recommandation des meilleures pratiques d'Apple est de ne plus utiliser les utilisateurs / nom d'utilisateur / sites et de s'en tenir à la bibliothèque / serveur Web / documents
James Martin

La seule instance Apache est un câble de lecture de projets Web à partir de plusieurs répertoires. C'est comme ça que je l'ai installé pendant des années.
sfyfedotcom



1

Juste mis à jour ce matin. Utilisation du dossier Sites dans / Users / username.

Sauvegardé et remplacé httpd.conf, httpd-userdir.conf et https-vhosts.conf avec les ~ variantes précédentes.

A couru sudo apachectl configtestet obtenu l'erreur PHP (PHP mis à jour à 7 dans High Sierra). Http.conf modifié pour démarrer PHP7 et maintenant tout fonctionne à nouveau.


+1 pour inclure la notesudo apachectl configtest
David C

1

Solution possible (après avoir échoué avec toutes les suggestions ci-dessus). Le problème est lié à l'autorisation du répertoire personnel. Il doit être exécutable pour le groupe / autres:

sudo chmod go + x / Utilisateurs / nom d'utilisateur

où "nom d'utilisateur" doit être remplacé par le nom d'utilisateur réel. Après ça, ça marche!


0

Phew!! Je l'ai compris moi-même.

Suivez ces étapes

Étape 1: ouvrez votre terminal et exécutez cette commande ci-dessous

sudo atom /etc/apache2/httpd.conf

Et puis commentez la ligne en supprimant le "#"signe avant

LoadModule php7_module libexec/apache2/libphp7.so

Étape 2: exécutez la commande suivante mentionnée ci-dessous

cd /private/etc

sudo cp php.ini.default php.ini

Étape 3: Ensuite, allez dans votre /Library/WebServer/Documentsrépertoire et faites un

sudo chown -R  root yourprojectname

Revenez à votre navigateur Safari et tapez "http://localhost/yourprojectname"

Vous êtes prêt à partir.

J'utilise MacOS High Sierra 10.13, il a été mis à jour hier matin.


localhostfuir /Library/WebServer/Documentsfonctionne très bien. Le problème est en cours localhost/~scottd' exécution à partir de /Users/Scott/Sites.
sfyfedotcom

0

J'ai passé toute la matinée à le comprendre, mais finalement ça a marché. J'espère que cela peut être utile à quelqu'un.

J'ai suivi un guide, mais avec un léger changement.

Maintenant, je peux accéder aux dossiers localhost, mais ...

Avant la haute-sierra c'était comme: http://localhost/~username/smomesite.local

Maintenant, c'est comme: http://localhost/smomesite.local

Plus ~usernamebesoin.


Je ne souhaite pas modifier le chemin d'accès Web par défaut d'Apache dans mon dossier utilisateur. Dans la version précédente de macOS, j'ai pu exécuter des fichiers / sites à partir du Users/myname/Sitesrépertoire et/Library/WebServer/Documents
sfyfedotcom

0

Je viens d'avoir ce même problème et je voulais faire exactement ce que vous vouliez (conserver la racine dans / Library / WebServer / Documents, mais aussi autoriser les dossiers des sites utilisateur). Je ne sais pas si cela sera utile, mais après avoir tapé dessus pendant des heures ce soir, en regardant ligne par ligne à travers tous les fichiers .conf, et en me demandant ce qui n'allait pas, j'ai réalisé que le processus httpd n'était pas en mesure de lire mon propre répertoire utilisateur. Pour une raison quelconque, il a été défini sur 750 et l'utilisateur _www ne peut pas le lire. Une fois que j'ai corrigé cela en exécutant "chmod 755". sur mon annuaire d'utilisateurs, le dossier Sites est apparu tout droit.

Je ne sais pas comment mon propre répertoire d'utilisateurs est devenu comme ça, car il semble qu'ils soient par défaut 755 lorsque je crée un nouvel utilisateur. Et j'avais déjà vérifié à plusieurs reprises que mon dossier Sites était réglé sur 755.


Je viens d'essayer cela et de redémarrer Apache. Toujours "Interdit: Vous n'avez pas la permission d'accéder à / ~ nom d'utilisateur / sur ce serveur"
sfyfedotcom

0

J'ai eu le même problème. J'ai commenté les deux lignes ci-dessous (comme déjà suggéré dans une autre réponse)

#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so 
#Include /private/etc/apache2/extra/httpd-vhosts.conf

Mais toujours la même erreur. L'astuce pour moi était de ne pas commenter ces lignes supplémentaires dans le fichier httpd.conf:

#LoadModule userdir_module libexec/apache2/mod_userdir.so 
#LoadModule include_module libexec/apache2/mod_include.so 
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

J'espère que cela pourra aider.


J'ai déjà décommenté ces lignes
sfyfedotcom

0

Il arrive que la mise à jour ait déplacé toute votre configuration précédente vers les fichiers .conf ~ previous. Si vous déplacez /etc/apache2/extra/httpd-userdir.conf~previous vers /etc/apache2/extra/httpd-userdir.conf et /etc/apache2/extra/httpd.conf~previous vers / etc / apache2 / extra / httpd.conf, cela devrait fonctionner comme avant.

mv /etc/apache2/extra/httpd-userdir.conf /etc/apache2/extra/httpd-userdir.conf~high-sierra
mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf~high-sierra
mv /etc/apache2/extra/httpd-userdir.conf~previous /etc/apache2/extra/httpd-userdir.conf
mv /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
apachectl restart

Il s'agissait d'une installation propre de High Sierra, donc je n'avais aucun fichier de configuration précédent
sfyfedotcom

0

J'ai eu le même problème. La résolution a été facile. Voir la réponse publiée ici: https://apple.stackexchange.com/a/306390/129503

J'ai fait face au même problème après ma mise à niveau vers High Sierra plus tôt dans la journée. J'ai trouvé que les fichiers apache suivants ont été remplacés par de toutes nouvelles versions. Heureusement pour tous ces fichiers, il existait un fichier FILE ~ précédent dans le même dossier. Je viens de recopier la ~ version précédente dans la version d'origine, de redémarrer Apache et tout allait bien.

Dans le dossier /etc/apache2:

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Exemple:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

0

Remplacer

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

à partir d'anciens fichiers ~ précédents.

Vous pourriez obtenir une erreur de module php5 dans httpd.conf, remplacez php5 par php7 et vos sites devraient commencer à fonctionner.

Remplacer

LoadModule php5_module libexec/apache2/libphp5.so

Avec

LoadModule php7_module libexec/apache2/libphp7.so

0

Je viens de mettre à jour et j'ai eu exactement les mêmes problèmes. Je n'utilise pas de vhosts. La solution pour moi était de garantir:

En https.confcommentaire

LoadModule userdir_module libexec/apache2/mod_userdir.so

LoadModule authz_host_module libexec/apache2/mod_authz_host.so

LoadModule authz_user_module libexec/apache2/mod_authz_user.so

LoadModule authz_core_module libexec/apache2/mod_authz_core.so

et assurez-vous qu'il extra/httpd-user.confa la ligne:

UserDir Sites
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.