cliente apache negado pela configuração do servidor após o upgrade do Mac OS X para Yosemite

9

Eu sei que isso é semelhante a outras perguntas, mas o Yosemite parece ter mudado algo com a configuração do apache com a atualização. meu log de erro 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 construído: Sep 9 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 voltar ao arquivo http.conf anterior, mas há várias diferenças em relação aos módulos que precisam ser carregados. É totalmente possível que eu tenha perdido um módulo, mas não há nenhuma reclamação no log.

    
por new2code 17.10.2014 / 16:54

7 respostas

15

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

link

    
por 17.10.2014 / 17:34
9

Eu também tive o mesmo problema e corrigi-lo:

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

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

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

por 18.10.2014 / 18:01
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, então não foi o problema de configuração mencionado por chrisMc, embora pareça que ele esteja certo e você precisará mudar isso também.

No meu caso, resolvi primeiro o problema central comentando a linha do módulo 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 consertou, mas por que a versão do Homebrew quebrou, acho que talvez uma biblioteca do sistema para a qual ele foi compilado tenha sido atualizada na atualização de segurança. Quando executei php -v , recebi um aviso sobre uma biblioteca icu4c que não foi carregada.

Então, eu recompilei o PHP e ele funcionou novamente. No meu caso, acabei de fazer

brew uninstall php54
brew install php54

O módulo Homebrew pode ser ativado novamente.

    
por 18.10.2014 / 14:37
1

Desde que eu nunca usei homebrew acabei seguindo este guia. Configuração para desenvolvimento pessoal .

Eu vi as permissões que o primeiro pôster estava falando como sendo parte do problema, mas ainda tenho um problema de permissões com a configuração pessoal usando um arquivo user.conf. Essa configuração usou hosts virtuais. Eu não tenho ideia do que homebrew fez que resolveu o problema. Eu acho que eu chamaria isso de uma solução porque não corrigiu o meu problema original, que é que eu não consigo acessar nada no servidor da web usando um arquivo user.conf.

    
por 18.10.2014 / 18:45
0

Em httpd.conf comentá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.conf uncomment:

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

Em seguida, reinicie o Apache.

    
por 18.10.2014 / 15:53
0

As respostas acima funcionam, em uma instalação de estoque. Se não, algumas coisas que podem ajudar:

  1. Em seu sistema de arquivos, a pasta precisa ser exatamente Sites com um 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 configuração <Directory…> é aplicada sobre ela, portanto, ela precisa corresponder exatamente ao nome da pasta, incluindo o caso (estamos vindo do Linux…).

    Permissões do arquivo /etc/apache2/users/username.conf :

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

Certifique-se de que a linha <Directory "/Users/user/Sites/"> se refira 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 pasta Sites exista exatamente como está. incluído.

    
por 29.03.2016 / 04:53
0

No meu caso, a versão 2.4.27 do apache.

Resolvi problema após alterar meu arquivo link de " /etc/apache2/extra/httpd-vhosts.conf "diretório.

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>
    
por 25.10.2017 / 21:19