Você instala o XAMPP, clica em Start no Apache, e nada. Ou pior: o painel até mostra “Apache is not started” e você fica olhando para a tela sem entender por que o XAMPP não inicia no Windows. Já passei por isso mais vezes do que gostaria de admitir, e na maioria dos casos o problema não é o XAMPP em si, mas algo que você está fazendo errado sem perceber.
O XAMPP não inicia no Windows por três motivos básicos: portas ocupadas, falta de privilégios de administrador ou configuração incorreta de serviços como Apache e MySQL. Parece simples, mas a quantidade de gente que trava nisso por dias é gigantesca. Vamos destrinchar cada um.
Portas 80 e 443: os ladrões silenciosos do seu Apache
O Apache do XAMPP quer usar a porta 80 (HTTP) e a 443 (HTTPS) por padrão. Se qualquer outro serviço já estiver nessas portas, o XAMPP não inicia corretamente no Windows. E quem costuma roubar essas portas? O IIS, o Skype (sim, ainda em 2026 tem gente usando), o Microsoft Teams antigo, alguns serviços de impressora e até o Windows Update em certos casos.
Para verificar, abra o prompt de comando como administrador e rode:
netstat -ano | findstr :80
Se aparecer algo, você tem um conflito. A solução mais rápida é mudar a porta do Apache. Abra o arquivo httpd.conf na pasta de instalação do XAMPP, procure a linha Listen 80 e troque para Listen 8080. Depois procure ServerName localhost:80 e atualize para ServerName localhost:8080. Salve, reinicie o Apache e acesse http://localhost:8080.
E se o Apache não iniciar depois de mudar a porta?
Aí é sinal de que outro processo está usando a nova porta. Rode netstat -ano | findstr :8080 e veja qual PID está ocupando. Com o PID em mãos, abra o Gerenciador de Tarefas, vá em Detalhes e finalize o processo. Ou escolha outra porta, tipo 8081, 8888, o que estiver livre.
Muita gente esquece que o httpd-vhosts.conf também pode ter referências a localhost:80. Se você usa virtual hosts, precisa atualizar lá também, senão o Apache até inicia, mas seus sites não respondem.
MySQL shutdown unexpectedly: o erro que mais assusta
O erro MySQL shutdown unexpectedly no XAMPP é um clássico. Ele aparece quando o MySQL é encerrado de forma inesperada, geralmente por banco de dados corrompido, porta 3306 ocupada ou permissões insuficientes. O primeiro passo é olhar os logs em xampp/mysql/data — o arquivo mysql_error.log vai dizer exatamente o que aconteceu.
Se for porta ocupada, rode netstat -ano | findstr :3306. Pode ser outro MySQL instalado separadamente, um serviço do Windows ou até uma instância antiga do próprio XAMPP que não foi encerrada direito. Finalize o processo e tente de novo.
Se for corrupção de dados, o caminho é restaurar de backup. E se você não tem backup, aprendeu da pior forma que XAMPP não é ambiente de produção. Sério, não use XAMPP para nada que vá para a web. Ele é ferramenta de desenvolvimento local, ponto.
Erro 443 already in use: o HTTPS que não sobe
A porta 443 é usada pelo Apache para conexões HTTPS. Se o Skype ou o IIS estiverem rodando, o XAMPP não inicia o SSL. A correção é editar o arquivo httpd-ssl.conf dentro de xampp/apache/conf/extra e trocar Listen 443 por algo como Listen 8443. Depois, no mesmo arquivo, atualize o <VirtualHost _default_:443> para a nova porta.
Detalhe importante: se você mudar a porta SSL, seus projetos locais que usam HTTPS precisam apontar para https://localhost:8443. Muita gente esquece e fica achando que o certificado quebrou.
UAC, firewall e antivírus: os sabotadores invisíveis
O Controle de Conta de Usuário (UAC) do Windows pode interferir na execução do XAMPP. Se você não executa como administrador, o Apache pode até iniciar, mas o MySQL frequentemente falha com Unable to open process. Isso é o firewall ou o antivírus bloqueando o processo.
Não recomendo desativar o UAC por completo — é medida de segurança. O correto é sempre abrir o XAMPP com Executar como administrador. Se o problema persistir, adicione exceções no firewall para xampp-control.exe, httpd.exe e mysqld.exe. Desative temporariamente o antivírus só para testar; se funcionar, você achou o culpado.
PHP: mudando versão e aumentando limite de upload
Se você precisa de uma versão específica do PHP, baixe no site oficial do PHP e substitua a pasta php dentro do diretório do XAMPP. Depois ajuste o php.ini conforme necessário. Um erro comum é esquecer de reabilitar extensões como mysqli, curl ou openssl após a troca.
Para aumentar o limite de upload de arquivos, edite o php.ini em xampp/php/ e altere upload_max_filesize e post_max_size. Coloque valores coerentes, tipo 64M e 128M. Reinicie o Apache para aplicar. Se não reiniciar, nada muda — e você vai jurar que o XAMPP está bugado.
Painel de controle congelando ao iniciar o Apache
Se o painel de controle do XAMPP congela ao iniciar o Apache, quase sempre é conflito de porta ou serviço de segurança. Altere as portas no httpd.conf e httpd-ssl.conf, verifique se nada está bloqueando 80 ou 443, e olhe os logs do Apache em xampp/apache/logs/error.log. O log é chato de ler, mas é onde está a resposta.
Em último caso, desinstale e reinstale o XAMPP. Antes disso, faça backup das suas pastas htdocs e dos bancos de dados. Reinstalar sem backup é receita para perder projeto.
O que quase ninguém te conta sobre o XAMPP
O XAMPP é ótimo para aprender e desenvolver localmente, mas ele não foi feito para produção. Senhas padrão, configurações abertas, serviços rodando como root — isso é um convite para problemas. Se você está usando XAMPP para hospedar algo público, pare agora.
Outra coisa: mantenha o XAMPP atualizado. Versões antigas têm bugs conhecidos que já foram corrigidos. E se você usa Windows 11 24H2 ou mais recente, verifique se o XAMPP é compatível com a versão atual — algumas atualizações do Windows quebram serviços que funcionavam antes.
No fim, a maioria dos erros do XAMPP que param seu desenvolvimento vem de conflitos de porta, permissões e configurações bagunçadas. Resolvendo isso, você volta a codar. E se nada funcionar, respire fundo, leia o log e pare de chutar solução de fórum de 2012.