O Apache não funciona com a pasta Sites do usuário no macOS 10.13 High Sierra

8

Segui este guia para configurar o Apache no High Sierra: https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-macos-sierra/

Eu o usei para configurá-lo na Sierra.

Mas quando eu vou http://localhost/~scott/, recebo "Proibido. Você não tem permissão para acessar / ~ scott / neste servidor."

Uma sugestão para essa pergunta semelhante: localhost / userdir no macOS High Sierra é carregar vhosts. O que eu tentei, mas ainda recebo "Proibido".

Alguma coisa mudou entre Sierra e High Sierra, o que impediria o Apache de trabalhar com as pastas Sites dos usuários?

sfyfedotcom
fonte
Tente apachectl configteste atualize a saída
Rakesh kumar
RetornaSyntax OK
sfyfedotcom
Ok por favor visite o URL localhost / ~ yourusername
Rakesh Kumar
"Proibido. Você não tem permissão para acessar / ~ scott / neste servidor."
sfyfedotcom

Respostas:

8

Isso funcionou para mim quando tive o mesmo problema.

Por favor, verifique o arquivo "/private/etc/apache2/extra/httpd-userdir.conf".

mudança

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

para

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

e reinicie o apache.

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

Robert
fonte
Essa entrada /private/etc/apache2/extra/httpd-userdir.confjá não é comentada, no link de instruções que segui.
Sfyfedotcom 28/09/17
você reiniciou o apache "sudo apachectl restart"
Robert
Sim. Eu tenho feito com todas as alterações de arquivos de configuração do Apache
sfyfedotcom
4

Para permitir o acesso ao diretório Sites, você deve adicionar o seguinte a /etc/apache2/httpd.conf:

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

A configuração padrão do Apache está definida como negada em /, então você deve permitir explicitamente o acesso a tudo.

AGraefe
fonte
Adicionado e reiniciado o apache. Não fez diferença
sfyfedotcom 7/11
Eu tive o mesmo problema. Estava recebendo o "Funciona!" no locahost, mas não conseguiu que os diretórios do usuário funcionassem. A correção da regra DirectoryMatch dessa maneira resolveu. Obrigado!
Karra
4

Apenas para expandir a resposta de Diogo Lima.

Com a atualização para High Sierra, a Apple fez cópias das configurações anteriores do apache e anexou um ~ anterior aos arquivos * .conf nas pastas / etc / apache2 e / etc / apache2 / extra. Se você estiver usando hosts virtuais ou hosts ssl-virtuais, também será necessário mover as versões anteriores desses arquivos .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
James Martin
fonte
Esta foi uma instalação limpa do High Sierra, então eu não tinha nenhum arquivo de configuração anterior.
sfyfedotcom 11/11/17
Então, só para esclarecer, você o tinha trabalhando no Sierra, mas não fez uma atualização, mas uma instalação completa e limpa? Lembro-me de que, quando configurei o funcionamento do Sierra, criei um link simbólico da pasta Sites para a pasta / Library / WebServer / Documents e verifiquei se havia me concedido permissão (leitura e gravação). Como parece ser apenas um problema de permissão nesse estágio, você criou o link simbólico e alterou as permissões?
James Martin
Sim esta correto. Eu sempre faço uma instalação limpa de novas versões do macOS. Estou ciente de que posso fazer isso, mas quero manter os dois /Library/WebServer/Documentse Users/username/Sitescomo locais separados para projetos da Web, pois é isso que tenho conseguido fazer no macOS nos últimos 10 anos ou mais.
Sfyfedotcom 14/11
Portanto, parece que você precisaria executar duas instâncias separadas do Apache na mesma máquina, mas isso não anularia todo o objetivo de balancear a carga dos sites que o Apache agora oferece ao executar a partir de uma única instância? Melhor recomendação práticas da Apple é não usar o Users / username / Sites e ficar com os Library / webserver / Documentos
James Martin
A instância única do Apache é um cabo de leitura de projetos da web de vários diretórios. É assim que eu faço isso há anos.
Sfyfedotcom 16/11/19
1

Eu estava na mesma situação, aparentemente existem mais algumas linhas para descomentar no httpd.conf, os vhosts não são ativados no High Sierra. - https://apple.stackexchange.com/a/299929/259065

Hugo Muralles
fonte
Eu já havia descomentado as duas linhas. Não faz diferença #
sfyfedotcom 11/11
1

Acabei de atualizar esta manhã. Usando a pasta Sites em / Usuários / nome de usuário.

Efetuou backup e substituiu httpd.conf, httpd-userdir.conf e https-vhosts.conf pelas ~ variantes anteriores.

Ran sudo apachectl configteste obtive o erro do PHP (PHP atualizado para 7 no High Sierra). Editou o http.conf para iniciar o PHP7 e agora tudo está funcionando novamente.

Jim Nail
fonte
+1 para incluir notasudo apachectl configtest
David C
1

Solução possível (depois de falhar com todas as sugestões acima). O problema é com a permissão do diretório inicial. Deve ser executável para o grupo / outros:

sudo chmod go + x / Usuários / nome de usuário

onde "nome de usuário" deve ser substituído pelo nome de usuário real. Depois disso, funciona!

Gabor
fonte
0

Ufa !! Eu mesmo descobri.

Faça estes passos

Etapa 1: Abra seu terminal e execute este comando abaixo

sudo atom /etc/apache2/httpd.conf

E, em seguida, descomente a linha removendo o "#"sinal antes de

LoadModule php7_module libexec/apache2/libphp7.so

Etapa 2: Execute o seguinte comando mencionado abaixo

cd /private/etc

sudo cp php.ini.default php.ini

Etapa 3: Vá para o seu /Library/WebServer/Documentsdiretório e faça um

sudo chown -R  root yourprojectname

Volte ao seu navegador Safari e digite "http://localhost/yourprojectname"

Você está pronto para ir.

Estou usando o MacOS High Sierra 10.13, ele foi atualizado ontem de manhã.

Shadab K
fonte
localhostfugir de /Library/WebServer/Documentsestá funcionando bem. O problema está sendo executado localhost/~scotta partir /Users/Scott/Sites.
Sfyfedotcom 02/10/19
0

Passamos a manhã inteira tentando descobrir, mas finalmente funcionou. Espero que isso possa ser útil para alguém.

Eu segui um guia, mas com uma ligeira mudança.

Agora posso acessar as pastas do host local, mas ...

Antes da alta serra era como: http://localhost/~username/smomesite.local

Agora é como: http://localhost/smomesite.local

Não é mais ~usernamenecessário.

iGian
fonte
Não quero alterar o caminho padrão da web do apache para minha pasta de usuário. Na versão anterior do MacOS eu fui capaz de executar arquivos / locais, tanto do Users/myname/Sitesdiretório e/Library/WebServer/Documents
sfyfedotcom
0

Acabei de ter o mesmo problema e queria fazer exatamente o que você queria (mantenha a raiz em / Library / WebServer / Documents, mas também permita as pastas Sites dos usuários). Não tenho certeza se isso será útil, mas depois de bater nisto por horas hoje à noite, procurando linha por linha em todos os arquivos .conf e imaginando o que estava errado, percebi que o processo httpd não conseguia ler o meu diretório de usuário próprio. Por algum motivo, foi definido como 750 e o usuário _www não pode lê-lo. Uma vez eu consertei isso executando o "chmod 755". no meu diretório de usuários, a pasta Sites foi exibida.

Não tenho certeza de como meu diretório de usuários ficou assim, pois parece que eles são o padrão 755 quando eu crio um novo usuário. E eu já tinha verificado duas vezes várias vezes se minha pasta Sites estava definida como 755.

Paulo
fonte
Apenas tentei e reiniciei o Apache. Ainda "Proibido: você não tem permissão para acessar / ~ nome de usuário / neste servidor"
sfyfedotcom
0

Eu tive o mesmo problema. Tirei o comentário das duas linhas abaixo (como já sugerido em outra resposta)

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

Mas ainda tenho o mesmo erro. O truque para mim foi descomentar essas linhas adicionais no arquivo 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

Espero que ajude.

Mike
fonte
Eu já uncommented essas linhas
sfyfedotcom
0

Acontece que a atualização moveu toda a sua configuração anterior para os arquivos .conf ~ previous. Se você mover /etc/apache2/extra/httpd-userdir.conf~previous para /etc/apache2/extra/httpd-userdir.conf e /etc/apache2/extra/httpd.conf~previous para / etc / apache2 / extra / httpd.conf, deve funcionar como antes.

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
Diogo Lima
fonte
Esta foi uma instalação limpa do High Sierra, então eu não tinha quaisquer arquivos de configuração anteriores
sfyfedotcom
0

Eu tive o mesmo problema. A resolução foi fácil. Veja a resposta postada aqui: https://apple.stackexchange.com/a/306390/129503

Eu enfrentei o mesmo depois que atualizei para High Sierra hoje cedo. Descobri que os seguintes arquivos apache foram substituídos por novas versões. Felizmente para todos esses arquivos, havia um arquivo FILE ~ anterior na mesma pasta. Acabei de copiar a versão anterior para a original, reiniciei o apache e estava tudo bem.

Na pasta /etc/apache2:

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

Exemplo:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
Desarrumar
fonte
0

Substituir

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

de arquivos antigos ~ anteriores.

O erro do módulo php5 no httpd.conf pode ser substituído, substitua o php5 pelo php7 e seus sites devem começar a funcionar.

Substituir

LoadModule php5_module libexec/apache2/libphp5.so

Com

LoadModule php7_module libexec/apache2/libphp7.so
Reverselogic
fonte
0

Acabei de atualizar e tive exatamente os mesmos problemas. Eu não uso fantasmas. A solução para mim foi garantir:

Em https.confdescomente

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

e verifique se extra/httpd-user.conftem a linha:

UserDir Sites
Helen Snaith
fonte