30 votes

Comment réparer 403 dans Mac OS X Apache intégré ?

J'essaie de mettre en place un environnement local sur mon nouveau Macbook Air 13" : Apache intégré avec mon propre système d'exploitation. DocumentRoot PHP et MySQL. Je mets généralement à jour /etc/hosts juste pour faire tourner mes sites locaux avec une jolie permalienne : local/example . Pour les références, je vérifie habituellement :

Cette fois-ci, je vais simplement obtenir un 403 Interdit erreur à chaque fois que j'appuie sur 127.0.0.1 , localhost ou local . Tout d'abord, j'ai vu dans le terminal qu'Apache et PHP fonctionnent (même si je ne peux pas afficher les pages PHP) ; ensuite, j'ai mis à jour toutes les permissions conformément à la directive Permissions d'Apache Maintenant, je suis juste désespéré. Voici les configurations Apache pertinentes :

On dirait qu'Apache me refuse l'accès à mon DocumentRoot (qui d'ailleurs est ~/Sites ). Parce que ~/Sites est en fait un lien symbolique, j'ai alors essayé de mettre à jour DocumentRoot avec les chemins suivants (tous pointant vers le même répertoire) :

  • ~/Sites
  • /Users/joao/Sites
  • /Users/joao/Dropbox/Workflow/Sites (le original répertoire)

Toujours en train de jeter 403 . Avez-vous une idée de la façon de réparer/déboguer ce problème ?

Mise à jour rapide - voici ce que mon /var/log/apache2/joao.pt-error_log ressemble :

[Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to / denied
[Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /favicon.ico denied
[Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /favicon.ico denied
[Sun Jul 07 12:50:45 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /favicon.ico denied
[Sun Jul 07 12:50:47 2013] [error] [client ::1] (13)Permission denied: access to / denied
[Sun Jul 07 12:50:47 2013] [error] [client ::1] (13)Permission denied: access to / denied
[Sun Jul 07 12:50:48 2013] [error] [client ::1] (13)Permission denied: access to /favicon.ico denied
[Sun Jul 07 12:50:48 2013] [error] [client ::1] (13)Permission denied: access to /favicon.ico denied

25voto

user3481991 Points 401

J'ai un alias spécifié dans le serveur OSX qui pointe vers un répertoire utilisateur. J'ai passé un long moment à modifier et à modifier l'utilisateur _www, à ajouter des autorisations d'exécution de manière récursive, à désinstaller macports et toutes sortes de choses pour essayer de faire en sorte que cela fonctionne. Aucune idée de la raison pour laquelle ça ne fonctionnait pas.

Éventuellement, Je viens de cocher la case "dossier partagé" dans le Finder pour ce dossier, et cela a fonctionné. sur le domaine spécifié, avec php actif, comme je le voulais. :/ ...donc c'était facile.

0 votes

Cela n'a pas fonctionné pour moi. J'ai créé un dossier /Sites (dans ma Racine / ) et j'y ai placé mes fichiers, en configurant les options Alias et Répertoire en conséquence. Cela a bien fonctionné.

18voto

Halil Özgür Points 250

Je règle généralement ce problème en définissant l'utilisateur Apache comme étant moi-même dans les environnements locaux et sur les machines où le seul utilisateur qui utilise Apache est moi. Dans /private/etc/apache2/httpd.conf ensemble User à votre nom d'utilisateur de _www par exemple :

User _www

->

User joao

Et puis redémarrez Apache :

$ sudo apachectl restart

Des étapes supplémentaires :

  1. Si vous avez des sessions actives, elles vont donner des erreurs de permission puisqu'elles sont toujours la propriété de _www . Les posséder :

    $ sudo chown joao: /var/tmp/sess_*

Implications :

Après cela, Apache (et PHP et al.) s'exécutera en votre nom et obtiendra les droits de lecture/écriture sur tous les fichiers pour lesquels vous avez les droits de lecture/écriture. Mais comme il s'agit d'un environnement de développement local, cela ne devrait pas poser de problème, à moins que votre pare-feu ne prévoie des règles pour bloquer Apache. et laisser des fichiers douteux comme les explorateurs de fichiers, les shells, les scripts qui peuvent contenir des vulnérabilités s'exécuter sous Apache ; dans ce cas, n'importe qui, y compris votre voisin en wifi public dans un café, peut entrer http://<your IP> et font tout ce que ces scripts leur permettent de faire.

En fait, vous devriez empêcher cela indépendamment des scripts que vous exécutez ou même si vous ne définissez pas l'utilisateur d'Apache comme étant vous-même, puisque vous ne voulez probablement pas que des étrangers aléatoires soient en mesure de voir le contenu de votre fichier localhost .

La prévention :

  1. Faites en sorte qu'Apache n'écoute que localhost. Encore une fois, dans httpd.conf :

    Listen 80

    ->

    Listen 127.0.0.1:80

    Et redémarrez Apache à nouveau :

    $ sudo apachectl restart
  2. Désactivez Apache dans le pare-feu des applications (notez que vous l'avez peut-être déjà désactivé si vous avez cliqué sur Deny si/quand elle a été demandée lors de la première exécution d'Apache) :

    1. Abrir System Preferences " Security & Privacy " Firewall .
    2. Cliquez sur l'icône de verrouillage en bas à gauche et saisissez votre mot de passe si nécessaire.
    3. Activez le pare-feu s'il est désactivé.
    4. Cliquez sur Firewall Options .
    5. Cliquez sur le bouton + bouton.
    6. Hit cmd + shift + G et saisissez /usr/sbin/httpd et cliquez sur Add (Si httpd ne s'affiche pas ici, vous pouvez le rechercher dans le terminal en which httpd )
    7. Dans la liste, cliquez sur httpd et sélectionnez Block incoming connections .
    8. Hit OK .
    9. Rechargez le pare-feu :

      $ launchctl unload /System/Library/LaunchAgents/com.apple.alf.useragent.plist
      $ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.alf.agent.plist
      $ launchctl load /System/Library/LaunchAgents/com.apple.alf.useragent.plist
      $ sudo launchctl load /System/Library/LaunchDaemons/com.apple.alf.agent.plist
  3. Restreindre le PHP à la racine du document. Dans php.ini :

    open_basedir = /Users/joao/Sites/:/var/tmp/

    ( /var/tmp/ est pour les sessions)

Utilisez ces trois solutions pour vous protéger au cas où l'une d'entre elles serait désactivée pour une raison quelconque.

- Notez que la langue active de mon ordinateur n'étant pas l'anglais, la formulation peut être légèrement différente (les options de menu et la formulation peuvent être différentes quelle que soit la langue dans les différentes versions d'OS X).

- Les lignes commençant par <code>$</code> doivent être saisis en ligne de commande (Terminal ou iTerm, etc.), avec l'adresse de l'utilisateur. <code>$</code> retiré.

0 votes

Je confirme que le fait de remplacer "User" par mon nom d'utilisateur et "Group" par "staff" a résolu l'erreur 403 avec XAMPP 7.1 sur MacOS Big Sur.

13voto

Rakesh James Points 211

Je mets à jour macOSS Sierra , Version 10.12

J'ai rencontré le même problème, j'ai fait deux choses pour le résoudre correctement. Voici mes approches.

1) Veuillez vérifier " /private/etc/apache2/extra/httpd-userdir.conf Fichier ". Changez

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

à

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

2)**Et modifiez votre " /etc/apache2/httpd.conf "

changement

Options FollowSymLinks Multiviews

à

Options FollowSymLinks Multiviews Indexes

Finalement, votre doc Root ressemblera à ce qui suit,

DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
Options FollowSymLinks Multiviews Indexes
MultiviewsMatch Any
AllowOverride All
Require all granted

3) Redémarrer apache

sudo apachectl restart

Si vous rencontrez toujours le problème, veuillez vérifier. Comment configurer Apache dans MacOS Sierra 10.12

5voto

Utku Demir Points 271

Je viens de résoudre mon problème en définissant des permissions non seulement pour le fichier DocumentRoot mais aussi à tous ses répertoires parents. Ceci est comment je l'ai fait .

(13) Permission refusée

L'erreur 13 indique un problème de permissions du système de fichiers. En d'autres termes, Apache s'est vu refuser l'accès à un fichier ou à un répertoire en raison de permissions incorrectes. Elle n'implique pas, en général, un problème dans les fichiers de configuration d'Apache.

Pour pouvoir servir des fichiers, Apache doit disposer des autorisations appropriées accordées par le système d'exploitation pour accéder à ces fichiers. En particulier, l'utilisateur ou le groupe spécifié dans httpd.conf doit être en mesure de lire tous les fichiers qui seront servis et de rechercher le répertoire contenant ces fichiers, ainsi que tous les répertoires parents jusqu'à la racine du système de fichiers.

Les permissions typiques sur un système de type Unix pour les ressources n'appartenant pas à l'utilisateur ou au groupe spécifié dans httpd.conf seraient 644 -rw-r--r-- pour les fichiers ordinaires et 755 drwxr-x-r-x pour les répertoires ou les CGI scripts. Vous pouvez également avoir besoin de vérifier les permissions étendues (telles que les permissions SELinux) sur les systèmes d'exploitation qui les prennent en charge.

Si vous utilisez la version 2.4, le code d'erreur AH peut vous donner plus d'informations ici.

  • AH00132 : les autorisations de fichiers refusent l'accès au serveur
  • AH00035 : accès refusé car les autorisations de recherche sont manquantes sur un composant du chemin d'accès Un exemple

Supposons que vous ayez reçu l'erreur Permission refusée en accédant au fichier /usr/local/apache2/htdocs/foo/bar.html sur un système de type unix.

Vérifiez d'abord les permissions existantes sur le fichier :

cd /usr/local/apache2/htdocs/foo
ls -l bar.htm

Corrigez-les si nécessaire :

chmod 644 bar.html

Puis faites de même pour le répertoire et chaque répertoire parent (/usr/local/apache2/htdocs/foo, /usr/local/apache2/htdocs, /usr/local/apache2, /usr/local, /usr) :

ls -la
chmod +x .
cd ..
# repeat up to the root

Sur certains systèmes, l'utilitaire namei peut être utilisé pour aider à trouver des problèmes de permissions en listant les permissions le long de chaque composant du chemin :

namei -m /usr/local/apache2/htdocs/foo/bar.html Si votre système ne dispose pas de namei, vous pouvez utiliser parsepath. Il peut être obtenu ici.

Si toutes les permissions standard sont correctes et que vous obtenez toujours une erreur "Permission refusée", vous devez vérifier les permissions étendues. Par exemple, vous pouvez utiliser la commande setenforce 0 pour désactiver SELinux et vérifier si le problème disparaît. Si c'est le cas, ls -alZ peut être utilisé pour afficher les permissions SELinux et chcon pour les corriger.

Dans de rares cas, cela peut être causé par d'autres problèmes, comme un problème de permissions de fichiers ailleurs dans votre fichier apache2.conf. Par exemple, une directive WSGIScriptAlias ne correspond pas à un fichier réel. Le message d'erreur peut ne pas être précis quant au fichier illisible.

NE PAS définir les fichiers ou les répertoires en mode 777, même "juste pour tester", même si "c'est juste un serveur de test". Le but d'un serveur de test est de faire les choses correctement dans un environnement sûr, pas de s'en sortir en faisant des erreurs. Tout ce que cela vous dira, c'est si le problème concerne des fichiers qui existent réellement.

CGI scripts

Bien que la permission CGI script puisse sembler correcte, le binaire réel spécifié dans le shebang pourrait ne pas avoir les permissions appropriées pour être exécuté. (Ou un certain répertoire sur son chemin, vérifiez avec namei comme expliqué ci-dessus).

(13)Permission refusée : proxy : HTTP : la tentative de connexion à 127.0.0.1:8080 (localhost) a échoué

Cette erreur n'a rien à voir avec les autorisations de fichiers ou quoi que ce soit d'autre. Ce qu'elle signifie en fait, c'est que httpd s'est vu refuser l'autorisation de se connecter à cette adresse IP et à ce port.

La cause la plus courante de ce problème est que SELinux ne permet pas à httpd d'établir des connexions réseau.

Pour résoudre ce problème, vous devez modifier une valeur booléenne SELinux (qui persistera automatiquement lors des redémarrages). Vous pouvez également redémarrer httpd pour réinitialiser le proxy worker, bien que cela ne soit pas strictement nécessaire.

# setsebool -P httpd_can_network_connect 1

1 votes

Pourriez-vous résumer les points essentiels dans votre réponse ? Merci !

2 votes

Accorder l'accès à tout son répertoire parent serait une énorme atteinte à la sécurité !

1 votes

Cette réponse n'est pas utile. La solution de contournement fonctionne pour les machines / configurations linux. OSX a une structure de répertoire différente, spécialement pour apache (situé dans /Library/WebServer) la solution donnée n'est pas pour OSx, comme le fait apple.stackexchange.

4voto

Rouke Points 41

Les étapes suivantes ont fonctionné pour moi sur High Sierra avec Apache 2.4.

(Basé sur l'excellent tutoriel suivant : http://www.cgi101.com/book/connect/mac.html (mise à jour avec des étapes supplémentaires pour les différences de version)

  1. Déplacez le fichier vers :

    /Library/WebServer/CGI-Executables
  2. Vérifiez que le fichier dispose des autorisations d'exécution :

    ls -l  /Library/WebServer/CGI-Executables

    Si vous ne l'utilisez pas :

    chmod -x  /Library/WebServer/CGI-Executables/myfile.cgi
  3. Décommentez les lignes suivantes dans /etc/apache2/httpd.conf

    AddHandler cgi-script .cgi .pl
    
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
    
    LoadModule cgi_module libexec/apache2/mod_cgi.so
  4. Changez également la strophe Directory "/Library/WebServer/CGI-Executables" en :

    <Directory "/Library/WebServer/CGI-Executables">
     AllowOverride None
     Options ExecCGI
     Require all granted
    </Directory>
  5. Puis redémarrez Apache :

    sudo apachectl -k restart

Presque à chaque nouvelle version de MacOS, les modifications seront perdues et vous devrez refaire le travail, et même effectuer différentes étapes pour le corriger. Votre meilleur ami est le journal d'Apache situé dans /var/log/apache2/ (/var/log/apache2/error_log).

1 votes

Pas une réponse mais une observation. #Instruction n° 1 ci-dessus : Déplacer le fichier vers : Quel fichier ?

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X