O Apache fornecido com o Sierra não irá parar ou reiniciar ou aceitar novas configurações

3

Eu recentemente instalei o PHP-7.1 através do homebrew no MacOS Sierra, e tudo parou de funcionar. Erros estranhos, problemas de permissão e assim por diante. Agora estou tentando parar o Apache (que vem com o Sierra) e o Apache não vai morrer.

Mate-o:

$ sudo apachectl stop
AH00557: httpd: apr_sockaddr_info_get() failed for My-MacBook-Pro.local
AH00558: httpd: Could not reliably determine the server's fully
qualified domain name, using 127.0.0.1. Set the 'ServerName' directive
globally to suppress this message
httpd (no pid file) not running

Verifique se está sendo executado:

$ sudo lsof -i:80
COMMAND   PID USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
httpd    3722 _www    4u  IPv6 0x123456789abcdef      0t0  TCP *:http (LISTEN)
httpd    3724 _www    4u  IPv6 0x123456789abcdef      0t0  TCP *:http (LISTEN)
httpd    3725 _www    4u  IPv6 0x123456789abcdef      0t0  TCP *:http (LISTEN)
httpd   56048 root    4u  IPv6 0x123456789abcdef      0t0  TCP *:http (LISTEN)
httpd   56055 _www    4u  IPv6 0x123456789abcdef      0t0  TCP *:http (LISTEN)

Acerte o Apache com uma verificação de status:

$ apachectl status
Go to http://localhost:80/server-status in the web browser of your choice.
Note that mod_status must be enabled for this to work.

Vamos tentar esse link:

$ curl http://localhost:80/server-status
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /server-status
on this server.<br />
</p>
</body></html>

Ok, então vamos tentar corrigir o httpd.conf e reiniciar o Apache:

$ sudo nano /etc/apache2/httpd.conf
$ sudo apachectl restart
AH00557: httpd: apr_sockaddr_info_get() failed for My-MacBook-Pro.local
AH00558: httpd: Could not reliably determine the server's fully 
qualified domain name, using 127.0.0.1. Set the 'ServerName' directive 
globally to suppress this message

Ah, e apenas para confirmar em /etc/apache2/httpd.conf eu tenho as duas linhas descomentadas:

ServerName localhost

LoadModule status_module libexec/apache2/mod_status.so

O que há de errado com o Apache e como posso parar tudo para que eu possa começar de novo?

    
por TheEnvironmentalist 08.04.2017 / 22:55

2 respostas

2

Se você interromper com êxito o Apache com o comando sudo apachectl stop , ainda verá a saída que viu ao emitir o comando apachectl status . Por exemplo, eu posso ver que o Apache está escutando na porta 80 no meu sistema OS X El Capitan com o comando netstat , pare com isso , verifique o status, que mostra a mesma mensagem que você postou, mas verifique se o Apache não está mais escutando na porta 80.

$ netstat -an | grep '.80' | grep -i Listen
tcp46      0      0  *.80                   *.*                    LISTEN
$ sudo apachectl stop
Password:
$ apachectl status
Go to http://localhost:80/server-status in the web browser of your choice.
Note that mod_status must be enabled for this to work.
$ netstat -an | grep '.80' | grep -i Listen
$

Portanto, ver essa saída de apachectl status não significa que o Apache ainda esteja em execução. Você pode verificar se ele não está mais atendendo na porta 80 usando o comando netstat -an | grep '.80' | grep -i Listen ou verificar se o processo do Apache um> httpd está sendo executado como mostrado abaixo.

$ ps aux | grep httpd | grep -v grep
_www            45379   0.0  0.0  2509492   1084   ??  S     6:27PM   0:00.00 /usr/sbin/httpd -D FOREGROUND
root            45376   0.0  0.1  2511540  11292   ??  Ss    6:27PM   0:00.19 /usr/sbin/httpd -D FOREGROUND
$ sudo apachectl stop
Password:
$ ps aux | grep httpd | grep -v grep
$

A mensagem de erro "403 Proibido" pode ser devido a um problema de permissões de arquivo . Se você colocar algum arquivo html no diretório DocumentRoot com acesso de leitura concedido a todos, por exemplo, chmod 644 index.html e tentar acessá-lo, o que você vê? Você também pode encontrar uma pista para o problema que está ocorrendo examinando o arquivo de log de erros do Apache. Você pode ver o local do arquivo usando o comando apachectl -S . Por exemplo:

$ apachectl -S
AH00557: httpd: apr_sockaddr_info_get() failed for GSSLA15122293
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80                   myserver.example.com (/private/etc/apache2/extra/httpd-vhosts.conf:24)
ServerRoot: "/usr"
Main DocumentRoot: "/Library/WebServer/Documents"
Main ErrorLog: "/private/var/log/apache2/error_log"
Mutex proxy: using_defaults
Mutex default: dir="/private/var/run/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex proxy-balancer-shm: using_defaults
PidFile: "/private/var/run/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="_www" id=70 not_used
Group: name="_www" id=70 not_used

A saída acima é o que eu vejo no meu sistema. Mesmo que o Apache esteja reclamando que "Não foi possível determinar com segurança o nome de domínio totalmente qualificado do servidor", posso acessar o arquivo index.html que coloquei no diretório DocumentRoot por meio do link , embora eu tenha definido ServerName e DocumentRoot em uma seção VirtualHost em / private / etc / apache2 / extra / httpd-vhosts.conf . O "não pode determinar com segurança o servidor totalmente nome de domínio qualificado "não significa que o Apache não esteja atento a conexões. É se você receber o erro" 403 Proibido "ao tentar acessar uma página no servidor, porque essa é uma mensagem de erro retornada pelo servidor da Web.

    
por 09.04.2017 / 00:54
2

Desde que você instalou o PHP via Homebrew, acredito que você tenha várias instalações do Apache, portanto, certifique-se de estar executando o caminho certo.

Primeiro, verifique versões diferentes de apachectl executando: which -a apachectl .

Em seguida, verifique qual arquivo de configuração do Apache está associado a qual apachectl , run:

apachectl -t -D DUMP_INCLUDES

Se você planeja iniciar o Apache com o Sierra, prefixe o caminho certo, por exemplo:

/usr/sbin/apachectl -t -D DUMP_INCLUDES
/usr/sbin/apachectl start
    
por 04.12.2017 / 16:33