cliente apache negado pela configuração do servidor após a atualização do mac OS X para Yosemite

12

Eu sei que isso se parece com outras perguntas, mas o Yosemite parece ter mudado algo na configuração do apache com a atualização. meu log de erros diz "cliente negado pela configuração do servidor: /Users/douglas/Sites/testpatient.php"

Versão do Apache: MacBook-Pro: apache2 douglas $ apachectl -v Versão do servidor: Apache / 2.4.9 (Unix) Servidor criado: 9 de setembro de 2014 14:48:20 meu arquivo douglas.conf é 644 root / wheel e o seguinte:

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

meu http.conf tem o seguinte:

# 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>

Qualquer coisa seria apreciada. Tentei reverter para o arquivo http.conf anterior, mas há várias diferenças quanto aos módulos que precisam ser carregados. É perfeitamente possível que eu tenha perdido um módulo, mas não há nenhuma reclamação no log.

new2code
fonte
Embora a resposta do chrisMc seja imediata , os futuros tropeços também podem querer ler a instalação do Apache, PHP e MySQL no Mac OS X Yosemite .
Jason McCreary

Respostas:

17

No seu usuário .conf (douglas.conf) substitua:

Order allow,deny
Allow from all

Com:

Require all granted

A diferença é como o apache 2.4 lida com permissões

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

chrisMc
fonte
Alterei as configurações em httpd.conf e douglas.conf, mas continuo com o mesmo erro
new2code
11
Não se esqueça de reiniciar o Apache
Thomas Edwards
Isso é legal, embora o antigo Pedido / Permissão / Negação ainda esteja funcionando se você tiver o access_compatmódulo ligado. Eu acho que teria sido melhor para mim obter erros e corrigir minhas configurações em vez de deixá-lo passar por mais tempo com as configurações antigas.
Alexis Wilke
11

Eu também tive o mesmo problema e o corrigi fazendo o seguinte:

  1. Carregue o módulo userdir localizando as seguintes linhas no httpd.conf e descomentando-o: LoadModule userdir_module libexec/apache2/mod_userdir.so Include /private/etc/apache2/extra/httpd-userdir.conf

  2. Edite extra / httpd-userdir.conf , encontre e descomente a seguinte linha: Include /private/etc/apache2/users/*.conf

  3. Edite users / *. Conf , adicione Require locale adicione +(ou -) caracteres antes de todas as opções na linha de opções, da seguinte maneira: <Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>

s4nji
fonte
11
Isso (exatamente isso, nada mais, nada menos) funcionou para mim, quando nada mais funcionou. Valeu!
Orome 18/10/2014
1

Eu experimentei a mesma coisa, mas no Mavericks depois de aplicar a atualização de segurança de alguns dias atrás. O Mavericks ainda está usando o Apache 2.2, portanto não foi o problema de configuração que o chrisMc mencionou, embora pareça que ele esteja certo e você precise mudar isso também.

No meu caso, resolvi o problema principal comentando a linha de módulos Homebrew PHP 5.4 que eu havia adicionado anteriormente. No httpd.conf:

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

E optando pelo módulo PHP padrão que eu havia comentado antes:

LoadModule php5_module libexec/apache2/libphp5.so

Isso foi corrigido, mas, por que a versão Homebrew foi quebrada, acho que talvez uma biblioteca de sistema em que foi compilada tenha sido atualizada na atualização de segurança. Quando corri php -v, recebi um aviso sobre uma icu4cbiblioteca que não estava carregada.

Então, eu apenas recompilei o PHP e funcionou novamente. No meu caso, eu apenas fiz

brew uninstall php54
brew install php54

Em seguida, o módulo Homebrew pode ser ativado novamente.

toddabrahm
fonte
1

Como nunca usei o homebrew, acabei seguindo este guia. Configuração para desenvolvimento pessoal .

Eu vi que as permissões das quais o primeiro pôster falava eram parte do problema, mas ainda tenho um problema de permissões na configuração pessoal usando um arquivo user.conf. Essa configuração usou hosts virtuais. Não faço ideia do que o homebrew fez que resolveu o problema. Acho que chamaria isso de solução alternativa, porque não corrigiu o problema original, que é o fato de não poder acessar nada no servidor da web usando um arquivo user.conf.

new2code
fonte
Impressionante! A chave para mim foi simplesmente comentar as linhas 220-221 ( # AllowOverride nonee # Require all denied) que aparentemente foram adicionadas recentemente em Yosemite.
MarkHu
0

Em httpd.confcomentário:

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

E em /etc/apache2/extra/httpd-userdir.confdescomentar:

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

Em seguida, reinicie o Apache.

chrisMc
fonte
0

As respostas acima funcionam, em uma instalação de estoque. Caso contrário, algumas coisas que podem ajudar:

  1. No seu sistema de arquivos, a pasta precisa ser exatamente Sites com S maiúsculo (o nome da pasta é codificado no módulo userdir, não pode ser diferente). Suas permissões devem ser:

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. A <Directory…>configuração é aplicada em cima dela, portanto, ela precisa corresponder exatamente ao nome da pasta, incluindo o caso (estamos vindo do Linux ...).

    Permissões do /etc/apache2/users/username.confarquivo:

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

Portanto, verifique se a linha <Directory "/Users/user/Sites/">se refere exatamente à pasta correta com o nome de usuário correto (com o usuário correspondente ao nome do arquivo de configuração), caso incluído, e a Sitespasta existe exatamente como está, caso incluído.

Brunni
fonte
0

No meu caso, apache versão 2.4.27.

Problema resolvido após alterar meu arquivo httpd-vhosts.conf do diretório " /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>

Para,

<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
fonte