O XAMPP não inicia o Apache no Mac OS X 10.6.8 Snow Leopard

1

Quando tento iniciar o Apache a partir do painel de controle do XAMPP (Mac OS X 10.6.8 Snow Leopard), recebo o seguinte pop-up de erro e o Apache não inicia:

/Applications/XAMPP/xamppfiles/bin/apachectl: line 70: ulimit: open files: cannot modify limit: Invalid argument
(48)Address already in use: make_sock: could not bind to address [::]:80

O XAMPP estava funcionando perfeitamente 10 minutos antes. Parei o Apache para adicionar alguns arquivos .conf e ele falhou na reinicialização. Eu removi todos os novos arquivos .conf (ou seja, reverti-lo para como era antes), mas agora recebo a mensagem acima.

Eu verifiquei o AppMonitor e vejo os httpd processos (um por _www aninhado dentro da raiz). Apenas tentei sair, mas eles foram reiniciados automaticamente em novos IDs de processo e não resolveram o problema.

E eu tentei uma reinicialização completa e ainda recebo o mesmo erro (antes de iniciar qualquer aplicativo). Eu ficaria grato se alguém tiver uma ideia de como resolver isso.

    
por Paul Masri-Stone 23.04.2012 / 13:15

3 respostas

0

Ele está reclamando que a porta 80 já está em uso. Em cenários como o seu, isso geralmente é causado pelo Apache (ou ainda) em execução.

Como você já percebeu, ainda há um processo httpd em execução. Certifique-se de sair primeiro dos processos all Apache HTTPD e, em seguida, inicie-o novamente.

    
por 23.04.2012 / 13:46
0

Isso permentirá a desativação do httpd.

sudo launchctl unload -w /System/Library/LaunchDaemon/org.apache.httpd.plist
    
por 19.06.2014 / 10:05
0

Há duas coisas que podem estar causando o problema: o serviço de compartilhamento da Web integrado da Apple está ativo ou os processos XAMPP de zumbis ainda estão ativos.

Se isso for causado pelo compartilhamento da web da Apple, você poderá lidar com isso indo até System Preferences… e selecionando Sharing . Uma vez lá, desmarque Web Sharing - que é basicamente apenas Apache httpd - e seu problema deve ser resolvido.

Dito isto, se esta é basicamente uma instância de “zumbis” do Apache rodando após alguns ajustes no XAMPP, a melhor aposta é fazer algo como o seguinte:

Primeiro, execute lsof (listar arquivos abertos), que listará todos os arquivos ativamente abertos o sistema.

sudo lsof | grep MAMP | grep apache

Observe os dois comandos grep conectados juntos? O que estou fazendo é obter a lista de arquivos abertos e, em seguida, filtrar aqueles que têm um caminho de arquivo conectado ao MAMP - ou, no seu caso, alterar isso para o XAMPP ou qualquer pasta / diretório em execução - e estou filtrando o apache no nome do caminho. A lista deve ser algo como isto:

httpd     2204            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2211            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2212            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2213            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2214            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2215            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log
httpd     2216            jake    2w      REG                1,2     24685 17953784 /Applications/MAMP/logs/apache_error.log

Ok, essa é uma lista completa de processos. O Apache é executado com base no conceito de que existe um processo pai com muitos processos filhos gerados para lidar com o tráfego. Então, se você matar um processo filho, o processo pai o notará & reaparece uma nova criança.

Agora, olhando para essa lista, normalmente o menor número na lista de processos será o pai - já que ele é iniciado antes do processo filho, é claro - então você deve matar isso para matar todos os processos. Portanto, neste caso, o processo de número mais baixo na lista é 2204 , portanto, basta executar este comando:

kill 2204

E, em seguida, o processo pai é eliminado e todos os processos filhos também devem ser removidos. Então, a porta 80 deve estar disponível novamente.

    
por 24.10.2014 / 06:07