client apache refusé par la configuration du serveur après la mise à niveau de mac OS X vers Yosemite

12

Je sais que cela ressemble à d'autres questions, mais Yosemite semble avoir changé quelque chose avec la configuration d'apache avec la mise à niveau. mon journal d'erreurs indique "client refusé par la configuration du serveur: /Users/douglas/Sites/testpatient.php"

Version Apache: MacBook-Pro: apache2 douglas $ apachectl -v Version serveur: Apache / 2.4.9 (Unix) Version du serveur: 9 septembre 2014 14:48:20 mon fichier douglas.conf est 644 root / wheel et ce qui suit:

<Directory "/Users/douglas/Sites">
   Options Indexes Multiviews
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

mon http.conf a les éléments suivants:

# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www

</IfModule>

...

DocumentRoot "/Library/WebServer/Documents"

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Satisfy All
</Directory>

...

<Directory "/Library/WebServer/Documents">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks MultiViews

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
#AllowOverride None
AllowOverride All
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
Satisfy All
</Directory>

Tout serait apprécié. J'ai essayé de revenir au fichier http.conf précédent, mais il existe un certain nombre de différences en ce qui concerne les modules qui doivent être chargés. Il est tout à fait possible que j'ai manqué un module mais il n'y a aucune plainte dans le journal.

new2code
la source
Bien que la réponse de chrisMc soit exacte , les futurs utilisateurs pourraient également vouloir lire l' installation d'Apache, PHP et MySQL sur Mac OS X Yosemite .
Jason McCreary

Réponses:

17

Dans votre utilisateur .conf (douglas.conf) remplacez:

Order allow,deny
Allow from all

Avec:

Require all granted

La différence réside dans la façon dont apache 2.4 gère les autorisations

http://httpd.apache.org/docs/2.4/upgrading.html

chrisMc
la source
J'ai changé les paramètres dans httpd.conf et douglas.conf mais j'obtiens toujours la même erreur
new2code
1
N'oubliez pas de redémarrer Apache
Thomas Edwards
C'est cool, bien que l'ancien Order / Allow / Deny fonctionne toujours si vous avez le access_compatmodule sous tension. Je pense qu'il aurait été préférable pour moi d'obtenir des erreurs et de corriger mes configurations au lieu de les laisser plus longtemps avec les anciennes configurations.
Alexis Wilke
11

J'ai également eu le même problème et je l'ai résolu en procédant ainsi:

  1. Chargez le module userdir en recherchant les lignes suivantes dans httpd.conf et en le décommentant: LoadModule userdir_module libexec/apache2/mod_userdir.so Include /private/etc/apache2/extra/httpd-userdir.conf

  2. Modifiez extra / httpd-userdir.conf , recherchez et décommentez la ligne suivante: Include /private/etc/apache2/users/*.conf

  3. Modifiez les utilisateurs / *. Conf , ajoutez Require localet ajoutez +(ou -) du caractère avant toutes les options de la ligne d'options, comme ceci: <Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>

s4nji
la source
1
Cela (exactement cela, rien de plus, rien de moins) a fonctionné pour moi, quand rien d'autre ne l'a fait. THX!
orome
1

J'ai vécu la même chose mais sur Mavericks après avoir appliqué la mise à jour de sécurité d'il y a quelques jours. Mavericks utilise toujours Apache 2.2, ce n'était donc pas le problème de configuration mentionné par chrisMc, bien qu'il semble qu'il ait raison et que vous devrez également changer cela.

Dans mon cas, j'ai d'abord résolu le problème principal en commentant la ligne de module Homebrew PHP 5.4 que j'avais précédemment ajoutée. Dans le httpd.conf:

#LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so

Et plutôt opter pour le module PHP par défaut que j'avais commenté auparavant:

LoadModule php5_module libexec/apache2/libphp5.so

Cela l'a corrigé, mais quant à la raison pour laquelle la version Homebrew s'est cassée, je pense que peut-être une bibliothèque système avec laquelle elle a été compilée a été mise à jour dans la mise à jour de sécurité. Lorsque j'ai couru, php -vj'ai reçu un avertissement concernant une icu4cbibliothèque qui n'était pas chargée.

Donc, je viens de recompiler PHP et cela a de nouveau fonctionné. Dans mon cas, je viens de faire

brew uninstall php54
brew install php54

Ensuite, le module Homebrew pourrait être réactivé.

Toddabrahm
la source
1

Comme je n'ai jamais utilisé d'homebrew, j'ai fini par suivre ce guide. Configuration pour le développement personnel .

J'ai vu que les autorisations dont parlait la première affiche faisaient partie du problème, mais j'ai toujours un problème d'autorisations avec la configuration personnelle à l'aide d'un fichier user.conf. Cette configuration utilise des hôtes virtuels. Je n'ai aucune idée de ce que les homebrews ont fait pour résoudre le problème. Je suppose que j'appellerais cela une solution de contournement car cela n'a pas résolu mon problème d'origine, à savoir que je ne peux rien accéder au serveur Web à l'aide d'un fichier user.conf.

new2code
la source
Impressionnant! La clé pour moi était simplement de commenter les lignes 220-221 ( # AllowOverride noneet # Require all denied) qui ont apparemment été récemment ajoutées dans Yosemite.
MarkHu
0

En httpd.confcommentaire:

LoadModule authz_core_module libexec/apache2/mod_authz_core.so 
LoadModule authz_host_module libexec/apache2/mod_authz_host.so 
LoadModule userdir_module libexec/apache2/mod_userdir.so 
Include /private/etc/apache2/extra/httpd-userdir.conf

Et en /etc/apache2/extra/httpd-userdir.confcommentaire:

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

Redémarrez ensuite Apache.

chrisMc
la source
0

Les réponses ci-dessus fonctionnent, sur une installation standard. Sinon, quelques choses qui pourraient aider:

  1. Sur votre système de fichiers, le dossier doit être exactement des sites avec un S majuscule (le nom du dossier est codé en dur dans le module userdir, il ne peut pas être différent) Ses autorisations doivent être:

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. La <Directory…>configuration est appliquée par-dessus, elle doit donc correspondre exactement au nom du dossier, y compris le cas (nous venons de Linux…).

    Autorisations du /etc/apache2/users/username.conffichier:

    -rw-r--r--  1 root  wheel  189 29 mar 11:42 username.conf
    

Assurez-vous donc que la ligne se <Directory "/Users/user/Sites/">réfère exactement au bon dossier avec le bon nom d'utilisateur (avec l'utilisateur correspondant au nom du fichier de configuration), cas inclus, et le Sitesdossier existe exactement tel quel, cas inclus.

Brunni
la source
0

Dans mon cas, apache version 2.4.27.

Problème résolu après avoir changé mon fichier httpd-vhosts.conf depuis le répertoire " /etc/apache2/extra/httpd-vhosts.conf ".

De

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>

À,

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    <Directory /Users/Vagabond/Sites/inventory/public/>
        Require all granted
        Options Includes FollowSymLinks
    </Directory>
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>
sh6210
la source