Você instala o XAMPP, clica em Start no Apache e… nada. Ou pior: aparece aquele “Apache is not started” que dá vontade de jogar o notebook pela janela. Se você está preso nesse inferno, a real é que 90% dos erros do XAMPP no Windows vêm de três coisas: porta ocupada, falta de permissão de administrador ou arquivo de configuração zoado. E não, não é culpa do XAMPP ser “ruim” — é que ele é sensível pra caramba e o Windows adora atrapalhar.
Por que o XAMPP não inicia no Windows? Os erros mais comuns
O erro mais clássico é o Apache não subir porque a porta 80 já está sendo usada. No Windows, o Skype, o IIS (servidor da Microsoft) e até o serviço “World Wide Web Publishing” costumam sequestrar essa porta sem pedir licença. Antes de sair alterando arquivo, roda no prompt de comando: netstat -ano | findstr :80. Se aparecer algum PID, você achou o intruso. Dá pra matar o processo pelo Gerenciador de Tarefas ou simplesmente mudar a porta do Apache.
A segunda causa que mais vejo é rodar o XAMPP sem privilégios de administrador. O painel até abre, mas o Apache e o MySQL não conseguem criar sockets nem escrever logs. Solução óbvia: clique com o botão direito no ícone do XAMPP e escolha “Executar como administrador”. Parece bobo, mas resolve uma boa parte dos casos de “XAMPP Apache não inicia”.
Como mudar a porta do Apache no XAMPP (e não quebrar tudo)
Se a porta 80 está ocupada, você tem duas saídas: liberar a porta ou trocar a do Apache. Eu prefiro trocar, porque caçar qual serviço está usando a 80 pode virar novela. Abra o arquivo httpd.conf dentro de xampp/apache/conf/ e procure a linha Listen 80. Troque por Listen 8080 (ou qualquer porta livre). Depois, ache ServerName localhost:80 e mude para ServerName localhost:8080. Salva, reinicia o Apache e acessa http://localhost:8080.
Só que tem um detalhe que quase ninguém fala: se você usa hosts virtuais, precisa editar também o httpd-vhosts.conf e atualizar todas as referências de localhost:80 para a nova porta. Esquecer isso é o motivo número 1 de gente que muda a porta e ainda vê erro 404 ou página em branco.
E se mesmo trocando a porta o Apache continuar não subindo? Aí é sinal de que a nova porta também está ocupada. Roda de novo o netstat, confere o PID e escolhe outra porta. Não fica tentando adivinhar.
MySQL shutdown unexpectedly: o erro que mais assusta (e tem solução)
O famoso “MySQL shutdown unexpectedly” aparece quando o banco de dados fecha sozinho. Quase sempre é porque a porta 3306 está sendo usada por outra instância do MySQL (às vezes já instalada no Windows) ou porque os arquivos de dados corromperam. Antes de sair reinstalando tudo, olha os logs em xampp/mysql/data/mysql_error.log. Ali tem a causa real: tabela corrompida, falta de permissão, InnoDB quebrado.
Uma solução que funciona em muitos casos: renomeia a pasta data para data_old, copia a pasta backup (que vem com o XAMPP) e renomeia para data. Isso restaura o MySQL para o estado inicial. Você perde os bancos criados, mas pelo menos o serviço volta a rodar. Depois é só importar seus dumps.
Dica de quem já perdeu horas: antes de qualquer coisa, verifique se o serviço “MySQL80” do Windows não está rodando em paralelo. Ele briga feio com o MySQL do XAMPP.
Se o erro persistir, edite o my.ini e certifique-se de que a linha port=3306 não está sendo conflitante. Às vezes basta mudar para 3307 e ajustar no phpMyAdmin (arquivo config.inc.php).
Porta 443 already in use: o HTTPS que não sobe
A porta 443 é usada pelo Apache para SSL. Quando o Skype ou o IIS estão abertos, eles tomam essa porta e o Apache morre na praia. O XAMPP mostra “port 443 already in use” e você fica sem HTTPS local. A correção é editar httpd-ssl.conf em xampp/apache/conf/extra/ e trocar Listen 443 por Listen 8443. Também atualize a diretiva VirtualHost para apontar para a nova porta. Depois, acesse https://localhost:8443.
Não adianta só mudar no httpd.conf e esquecer o ssl. São arquivos separados e cada um precisa da sua alteração. Isso é uma das maiores pegadinhas do XAMPP.
“Unable to open process” e outros erros de permissão
Esse erro geralmente é o firewall ou antivírus bloqueando o processo do MySQL ou do Apache. O Windows Defender, o Avast e o Kaspersky adoram interferir. Adicione a pasta do XAMPP nas exceções do firewall e, se necessário, desative temporariamente o antivírus para testar. Se funcionar, você já sabe quem é o culpado.
Outra causa é o UAC (Controle de Conta de Usuário) muito restritivo. Dá pra diminuir o nível de notificação no Painel de Controle, mas eu não recomendo desativar completamente — é um risco de segurança. Melhor executar o XAMPP como administrador sempre.
Ajustes no PHP que evitam dores de cabeça
Se você precisa fazer upload de arquivos grandes e o PHP corta, o problema está no php.ini. Procure upload_max_filesize e post_max_size e aumente os valores. Exemplo: 64M e 64M. Depois reinicie o Apache. Só isso já resolve o erro de “file too large” que trava testes com WordPress ou Laravel.
Quer trocar a versão do PHP? Baixe a versão desejada no site oficial do PHP, substitua a pasta php dentro do XAMPP e ajuste o php.ini. Cuidado: versões muito novas podem não ser compatíveis com o Apache do XAMPP. Teste antes em ambiente separado.
Quando nada resolve: reinstalar ou usar alternativa
Se você já tentou tudo — portas, permissões, logs, firewall — e o XAMPP continua dando erro, pode ser instalação corrompida. Desinstale, apague a pasta residual em C:xampp e instale de novo. Baixe sempre do site oficial (apachefriends.org) para evitar versões modificadas.
Mas olha, se o seu problema é só rodar PHP e MySQL local, talvez valha a pena conhecer alternativas como Laragon ou o próprio Docker com containers. O XAMPP é ótimo para começar, mas em 2026 ele já mostra a idade. Para projetos sérios, um ambiente conteinerizado evita exatamente esse tipo de conflito de porta e permissão.
No fim, a regra é: não entre em pânico. 90% dos erros do XAMPP são resolvidos com netstat, executar como administrador e ler os logs. O resto é persistência. E se você ainda travar, a comunidade é gigante — alguém já passou pelo mesmo erro antes.