Você instala o XAMPP, clica em start no Apache e… nada. Ou pior: o painel trava, o MySQL fecha sozinho e você fica olhando para aquela telinha verde sem entender por que o seu ambiente de desenvolvimento simplesmente não sobe. A verdade é que 90% dos erros do XAMPP no Windows são causados por três coisas: porta ocupada, permissão de administrador e arquivo de configuração mexido sem critério. O resto é consequência.
Se você está pesquisando “XAMPP não inicia” ou “Apache is not started”, saiba que o problema quase nunca é o XAMPP em si. É o Windows, são outros serviços rodando por baixo do panos e é a sua própria pressa em configurar tudo de qualquer jeito.
Apache não inicia: porta 80 ocupada é a causa número 1
O Apache, por padrão, tenta subir na porta 80 (HTTP) e na 443 (HTTPS). No Windows, a porta 80 é território disputado. O IIS, o Skype (em versões antigas), o serviço “Web Deployment Agent”, o Teams e até o Windows Update podem estar segurando essa porta. Resultado: o Apache tenta iniciar, não consegue e o painel do XAMPP mostra aquele “Apache is not started” que não explica nada.
Para descobrir quem está ocupando a porta, abra o prompt de comando como administrador e rode:
netstat -ano | findstr :80
O último número da linha é o PID do processo. Joga no Gerenciador de Tarefas (aba Detalhes) e você descobre o nome do serviço. Se for algo que você não usa, para o serviço. Se for algo que você precisa — tipo o IIS —, a saída é trocar a porta do Apache.
Como mudar a porta do Apache no XAMPP sem quebrar o resto
Abre o arquivo httpd.conf dentro de C:xamppapacheconf. Procura a linha:
Listen 80
Troca por Listen 8080 (ou qualquer porta livre acima de 1024). Depois procura:
ServerName localhost:80
E atualiza para ServerName localhost:8080. Salva, reinicia o Apache e acessa http://localhost:8080 no navegador. Se você usa virtual hosts, não esquece de alterar também o httpd-vhosts.conf, senão seus projetos continuam apontando para a porta antiga e você vai jurar que o XAMPP quebrou.
Agora, se o Apache não iniciar nem depois de mudar a porta, é porque a nova porta também está ocupada. Roda o netstat de novo apontando para a porta nova. Parece óbvio, mas é o erro que mais vejo: a pessoa troca de 80 para 8080 e o Tomcat ou o Jenkins já estava lá.
MySQL shutdown unexpectedly: o erro que mais assusta (e tem solução simples)
O “MySQL shutdown unexpectedly” aparece quando o banco é encerrado de forma abrupta. As causas mais comuns são:
- Porta 3306 ocupada por outra instância do MySQL ou MariaDB instalada antes do XAMPP.
- Arquivos de log corrompidos na pasta xampp/mysql/data — especialmente o ib_logfile0 e ib_logfile1.
- Desligamento forçado do Windows no meio de uma escrita no banco.
- Antivírus ou firewall bloqueando o processo mysqld.exe.
Antes de sair reinstalando tudo, vai em xampp/mysql/data e olha o arquivo mysql_error.log. Ele diz exatamente o que aconteceu. Em muitos casos, a solução é mover os arquivos ib_logfile0 e ib_logfile1 para uma pasta de backup e reiniciar o MySQL. O XAMPP recria esses logs do zero e o banco volta. Simples assim, sem drama.
Se o erro persistir, verifica se a porta 3306 está livre com netstat -ano | findstr :3306. Se estiver ocupada, muda a porta no my.ini (procura por port=3306 e troca para 3307).
Erro 443 already in use: o HTTPS do Apache brigando com outros programas
A porta 443 é usada pelo Apache para conexões seguras. O Skype, o IIS e alguns serviços da Adobe adoram tomar conta dela. O sintoma é o Apache iniciar no HTTP (80) mas falhar no SSL. A correção é no arquivo httpd-ssl.conf, dentro de xampp/apache/conf/extra. Altera:
Listen 443
Para Listen 8443. Depois, no mesmo arquivo, ajusta o <VirtualHost _default_:443> para 8443. Reinicia o Apache e pronto. Seus projetos em HTTPS vão rodar em https://localhost:8443.
Permissões de administrador e UAC: o detalhe que ninguém lê
O XAMPP precisa de privilégios elevados para abrir portas abaixo de 1024 e para manipular serviços do Windows. Se você não executa o painel de controle como administrador, o Apache e o MySQL podem até iniciar, mas vão falhar silenciosamente em algum ponto. Clica com o botão direito no ícone do XAMPP e escolhe “Executar como administrador”. Sempre.
Sobre desativar o UAC: não recomendo. É uma solução preguiçosa e abre brecha de segurança no sistema inteiro. Melhor configurar o XAMPP para rodar como administrador de forma permanente — clica com o botão direito no atalho, Propriedades, Compatibilidade, e marca “Executar este programa como administrador”. Resolve o problema sem baixar a guarda do Windows.
PHP não atualiza ou upload falha: mexe no php.ini com cuidado
Se você trocou a versão do PHP na pasta do XAMPP e o ambiente quebrou, provavelmente o php.ini ficou dessincronizado. O XAMPP usa o php.ini da própria instalação, não o global. Depois de substituir a pasta php, confere se as extensões que você usava continuam habilitadas — mysqli, curl, openssl, mbstring.
Para aumentar o limite de upload, edita no php.ini:
- upload_max_filesize = 64M
- post_max_size = 64M
- max_execution_time = 300
Reinicia o Apache depois. Sem reiniciar, nada muda — e você vai achar que o arquivo não foi salvo.
Quando reinstalar o XAMPP é realmente a resposta
Reinstalar só resolve quando os arquivos de configuração estão tão bagunçados que você perdeu o controle do que foi mexido. Antes disso, tenta o seguinte: renomeia a pasta xampp para xampp_old, instala uma versão limpa em uma pasta nova e copia apenas os seus projetos e os bancos de dados. Não sai copiando httpd.conf, my.ini e php.ini antigos — é justamente aí que o problema volta.
Outra dica que economiza horas: mantenha o XAMPP fora de C:Program Files. Essa pasta tem controle de permissões mais rígido no Windows e causa erros aleatórios de escrita. Instala em C:xampp direto na raiz. Menos dor de cabeça.
Checklist rápido para quando o XAMPP travar
- Executou como administrador? Se não, fecha e abre de novo.
- Rodou netstat -ano | findstr :80 e :3306 para ver portas ocupadas?
- Olhou os logs em xampp/apache/logs/error.log e xampp/mysql/data/mysql_error.log?
- Trocou as portas no httpd.conf, httpd-ssl.conf e my.ini se necessário?
- Firewall ou antivírus estão bloqueando o mysqld.exe ou o httpd.exe?
- O php.ini está apontando para a versão correta do PHP?
Não existe mágica. O XAMPP é uma ferramenta de desenvolvimento local e o Windows não foi feito para ele — foi feito para o IIS. Entender isso muda a forma como você encara os erros. Não é o XAMPP que está quebrado: é o ambiente em volta que precisa ser ajustado com método.