Estou tentando definir um ambiente local no meu novo MacBook Air 13 ": Apache embutido com meu próprio DocumentRoot
, PHP e MySQL. Normalmente, atualizo /etc/hosts
apenas para executar meus sites locais com um link permanente: local/example
Para referências, geralmente Verifica:
- Como transformar o Mac OS X Lion em um servidor web?
- Habilitando o Apache no Mac OS X Mountaion Lion
- Permissões do Apache
Desta vez eu estou simplesmente recebendo uma Forbidden 403 de erro cada vez que eu bati 127.0.0.1
, localhost
ou local
. Primeiro vi através do terminal que o Apache e o PHP estão em execução (mesmo que eu não consiga visualizar as páginas PHP); atualizei todas as permissões de acordo com as permissões do Apache ; agora estou apenas desesperado. Aqui estão as configurações relevantes do Apache:
/etc/hosts
( visualizar arquivo - adicionada uma linha)/etc/apache2/httpd.conf
( visualizar arquivo - atualizadoDocumentRoot
)/etc/apache2/users/joao.conf
( visualizar arquivo - criou este arquivo)/etc/apache2/extra/httpd-vhosts.conf
( visualizar arquivo - atualizadoVirtualHost
)
Parece que o Apache está de alguma forma me negando acesso ao meu DocumentRoot
(que por sinal é ~/Sites
). Como ~/Sites
na verdade é um link simbólico, tentei atualizar DocumentRoot
com os seguintes caminhos (todos apontando para o mesmo diretório):
~/Sites
/Users/joao/Sites
/Users/joao/Dropbox/Workflow/Sites
(o diretório original )
Ainda jogando 403 . Alguma idéia de como corrigir / depurar isso?
Atualização rápida - eis a minha /var/log/apache2/joao.pt-error_log
aparência:
[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
fonte
/Sites
(na minha/
pasta raiz ) e coloquei meus arquivos lá, configurando as opções de Alias e Diretório de acordo. Funcionou bem.Eu atualizo para o macOSS Sierra , versão 10.12
Enfrento o mesmo problema, fiz duas coisas para corrigi-lo corretamente. A seguir estão minhas abordagens.
1) Verifique o arquivo " /private/etc/apache2/extra/httpd-userdir.conf ". mudança
para
2) ** E edite seu " /etc/apache2/httpd.conf"
mudança
para
finalmente, a raiz do seu documento será semelhante à seguinte,
3) Reinicie o apache
Ainda enfrentando o problema, verifique Como instalar o Apache no macOS Sierra 10.12
fonte
Geralmente, eu corrijo isso configurando o usuário do Apache para mim em ambientes locais e em máquinas em que o único usuário que usa o Apache sou eu. Em
/private/etc/apache2/httpd.conf
, defina oUser
seu nome de usuário em_www
, por exemplo:->
E, em seguida, reinicie o Apache:
Etapas adicionais:
Se você tiver sessões ativas, eles fornecerão erros de permissão, pois ainda pertencem a eles
_www
. Possuí-los:Implicações:
Depois disso, o Apache (e PHP et al.) Serão executados como você e obterão permissão de leitura / gravação para todos os arquivos que você possui permissão de leitura / gravação. Mas como esse é apenas um ambiente de desenvolvimento local, isso não deve ser um problema, a menos que você não tenha regras para bloquear o Apache no firewall e permita que arquivos questionáveis, como exploradores de arquivos, shells, scripts que possam conter vulnerabilidades, sejam executados no Apache; nesse caso, qualquer pessoa, incluindo seu vizinho de wifi público em um café, pode entrar
http://<your IP>
e fazer o que esses scripts permitirem.De fato, você deve evitar isso, independentemente dos scripts executados ou mesmo se não definir o usuário do Apache para si mesmo, pois provavelmente não deseja que pessoas de fora aleatórias possam ver o conteúdo do seu
localhost
.Prevenção:
Faça o Apache ouvir apenas o host local. Mais uma vez, em
httpd.conf
:->
E reinicie o Apache novamente:
Desabilite o Apache no firewall do aplicativo (observe que você já o desabilitou se clicou
Deny
se / quando foi solicitado durante a primeira vez que o Apache foi executado):System Preferences
»Security & Privacy
»Firewall
.Firewall Options
.+
botão/usr/sbin/httpd
e cliqueAdd
(sehttpd
não aparecer lá, você pode procurá-lo no terminalwhich httpd
)httpd
e selecioneBlock incoming connections
.OK
.Recarregue o firewall:
Restrinja o PHP à raiz do documento. Em
php.ini
:(
/var/tmp/
é para sessões)Use todas as três soluções para se proteger caso uma delas seja desativada por algum motivo.
- Observe que, como meu idioma ativo na minha máquina não é o inglês, as palavras podem ser um pouco diferentes (as opções de menu e as palavras podem ser diferentes, independentemente do idioma nas várias versões do OS X).
- As linhas que começam com
$
precisam ser inseridas na linha de comando (Terminal ou iTerm etc.), com as$
removidas.fonte
Acabei de resolver meu problema definindo permissões não apenas no
DocumentRoot
diretório, mas também em todos os diretórios pai. Foi assim que eu fiz .fonte
As etapas a seguir funcionaram para mim no High Sierra executando o Apache 2.4
(Com base no excelente tutorial a seguir: http://www.cgi101.com/book/connect/mac.html , atualizado com etapas adicionais para diferenças de versão)
Mova o arquivo para:
Verifique se o arquivo tem permissões de execução:
Se não usar:
Remova o comentário das seguintes linhas em /etc/apache2/httpd.conf
Altere também a sub-rotina Diretório "/ Library / WebServer / CGI-Executables" para:
Em seguida, reinicie o Apache:
Quase a cada nova versão do macOS, as alterações se perdem e você precisará refazer o trabalho e executar etapas diferentes para corrigi-lo. Seu melhor amigo são os logs do Apache localizados em / var / log / apache2 / (/ var / log / apache2 / error_log)
fonte
Eu estava usando ACLs para definir permissões, seguindo as instruções em " Como definir permissões de arquivo e diretório para Apache no Mac OS X ", mas ainda obtendo:
Depois li " (13) Permissão Negada " (vinculada à resposta de João Ramos ) e tentei adicionar "execute" à ACL. Isso funcionou.
fonte
Reinicie o seu computador! Isso funcionou para mim.
Mas, antes de tudo, eu havia mudado o usuário no apache para mim mesmo (de _www), pois é um ambiente local / de teste. Então, em última análise, tem algo a ver com permissões.
Em seguida, reinicie a máquina, assim como o Windows;).
fonte
O OP descreve um problema que ocorre ao tentar configurar um ambiente de servidor da Web local em um Mac, usando Apache, PHP e MySQL, com um DocumentRoot personalizado e incluindo uma menção ao uso do VirtualHost (vhost). O OP informa que está recebendo um erro 403 Proibido ao acessar o host local.
Um artigo no coolestguidesontheplanet descreve como a configuração de hosts virtuais no Apache causa "Losing Localhost". Em outras palavras, a causa raiz do problema do OP pode ser uma ativação incompleta dos fantasmas.
O artigo continua explicando como corrigir o host local em um ambiente vhost.
Ele também explica como corrigir "problemas de permissões com atualizações e autenticação" associadas a "usando a pasta Usuários / nome de usuário / Sites para vhosts".
https://coolestguidesontheplanet.com/set-virtual-hosts-apache-mac-osx-10-10-yosemite/
fonte