Se XAMPP non si avvia su Windows e ti ritrovi con Apache o MySQL che rifiutano di partire, il 90% delle volte non è colpa di XAMPP stesso. È colpa di quello che gli stai facendo tu: porte occupate, permessi negati, config pasticciate. Te lo dico senza girarci intorno, perché dopo anni di forum e log letti a notte fonda, i pattern sono sempre gli stessi.
Perché XAMPP non si avvia su Windows: i tre colpevoli reali
Il problema di fondo è quasi sempre uno di questi tre: la porta 80 o 443 è già occupata da un altro servizio, XAMPP non gira con privilegi di amministratore, oppure un file di configurazione (httpd.conf, my.ini) è stato modificato male. Punto.
Windows ha la simpatica abitudine di riservare la porta 80 a IIS, al servizio “World Wide Web Publishing” o a Skype che, in versioni vecchie, la usava come porta alternativa. Risultato: Apache prova a partire, non ci riesce, e tu vedi quel messaggio “Apache is not started” che ti fa impazzire.
La soluzione rapida è aprire il prompt come amministratore e lanciare netstat -ano | findstr :80. Se qualcosa risponde, hai trovato il colpevole. Poi con tasklist /FI “PID eq [numero]” capisci che processo è e decidi se killarlo o spostare Apache.
Come cambiare la porta di Apache in XAMPP senza rompere tutto
Cambiare porta è la mossa più pulita quando la 80 è off-limits. Apri xampp/apache/conf/httpd.conf, cerca la riga Listen 80 e sostituiscila con Listen 8080. Subito dopo cerca ServerName localhost:80 e aggiornala a ServerName localhost:8080. Salva, riavvia Apache.
Ma attenzione: se hai virtual host configurati, devi aggiornare anche httpd-vhosts.conf, altrimenti Apache parte ma i tuoi progetti non si aprono. E questo è l’errore che frega il 70% di chi cambia porta la prima volta.
Se usi HTTPS in locale, la porta 443 va gestita a parte nel file httpd-ssl.conf. Lì cambi Listen 443 in Listen 8443. Dimenticarsene è il motivo numero uno per cui Apache parte ma poi si chiude di botto dopo pochi secondi.
Errore MySQL shutdown unexpectedly: la guida che funziona davvero
Il temutissimo “MySQL shutdown unexpectedly” su XAMPP è un classico del 2026. Succede quando MySQL si spegne da solo, di solito per un database corrotto, un file di log troppo grosso o la porta 3306 occupata da un’altra istanza di MySQL installata a parte.
Prima cosa: vai in xampp/mysql/data e apri il file mysql_error.log. Lì trovi la causa vera, non quella che immagini. Spesso c’è scritto qualcosa tipo “InnoDB: Unable to lock ./ibdata1” o un errore di corruzione su una tabella specifica.
Se è un problema di lock, chiudi tutto, apri Task Manager e ammazza ogni processo mysqld.exe o mysql.exe. Se il problema è di corruzione, la strada è rinominare la cartella data in data_old, copiare la cartella backup originale di XAMPP come nuova data, e poi recuperare i tuoi database uno alla volta.
Regola d’oro: prima di toccare qualsiasi cosa in xampp/mysql/data, fai una copia della cartella. Non c’è peggior dolore che perdere mesi di lavoro per un ripristino fatto male.
Permessi di amministratore: il motivo per cui XAMPP fa i capricci
Se XAMPP non si avvia e non capisci perché, la prima cosa da fare è chiuderlo e riaprirlo con click destro → Esegui come amministratore. Sembra banale, ma su Windows 10 e 11 il pannello di controllo di XAMPP ha bisogno di privilegi elevati per aprire le porte sotto la 1024 e per scrivere nei log di sistema.
Se anche così non va, il colpevole può essere l’UAC (Controllo Account Utente). Puoi abbassarlo da Pannello di controllo → Account utente → Modifica impostazioni di Controllo account utente, portandolo su “Non notificare mai”. Non è elegante, ma funziona. E per un ambiente di sviluppo locale, il rischio è accettabile.
Firewall e antivirus: i nemici silenziosi di XAMPP
L’errore “Unable to open process” quando lanci MySQL è quasi sempre colpa del firewall di Windows o di un antivirus troppo zelante. Windows Defender, Avast, Kaspersky e simili a volte bloccano mysqld.exe perché lo scambiano per un processo sospetto.
La soluzione è aggiungere la cartella XAMPP alle eccezioni del firewall e dell’antivirus. Non disattivare tutto a cuor leggero, ma crea una regola specifica per xampp/mysql/bin/mysqld.exe e xampp/apache/bin/httpd.exe. Così non tocchi la sicurezza generale del sistema.
Configurazione PHP in XAMPP: aumentare il limite di upload file
Se lavori con WordPress, Joomla o qualsiasi CMS che carica file, prima o poi sbatti contro il limite di upload. XAMPP di default imposta valori ridicoli come 2M. Per cambiarli apri xampp/php/php.ini e modifica queste direttive:
- upload_max_filesize = 128M
- post_max_size = 128M
- max_execution_time = 300
- memory_limit = 256M
Riavvia Apache dopo il salvataggio. Se non funziona, significa che stai modificando il php.ini sbagliato: XAMPP ne ha uno per ogni versione di PHP installata, quindi controlla che sia quello effettivamente usato.
Cambiare versione di PHP in XAMPP senza disastri
Serve una versione specifica di PHP per testare un progetto legacy? Scarica il pacchetto dal sito ufficiale di PHP, sostituisci la cartella xampp/php con quella nuova, e aggiorna il php.ini copiando le direttive personalizzate dal vecchio file. Non copiare il php.ini intero: le versioni di PHP hanno direttive diverse e rischi che Apache non parta più.
Prima di fare questo, esporta il php.ini attuale e tieni a portata di mano la versione precedente di XAMPP. Se qualcosa va storto, torni indietro in due minuti invece di reinstallare tutto.
Quando tutto fallisce: reinstallare XAMPP è l’ultima spiaggia
Se hai provato di tutto — porte libere, permessi admin, config pulite, firewall aperto — e XAMPP continua a non partire, il problema può essere un’installazione corrotta. In quel caso disinstalla XAMPP, cancella manualmente la cartella residua, e reinstalla la versione più recente dal sito ufficiale Apache Friends.
Prima di farlo, salva i tuoi database esportandoli con mysqldump o copiando la cartella mysql/data. I progetti in htdocs non li perdi se non tocchi quella cartella, ma i database sì se non li esporti. E questo è l’errore più grave che puoi fare in assoluto.
Il vero problema non è XAMPP, sei tu che lo configuri male
Lo dico con affetto: XAMPP è un ambiente di sviluppo pensato per essere semplice, non per essere sicuro o production-ready. Se lo tratti come un server vero, ti tradirà. Se lo usi come strumento da banco, con backup regolari e config pulite, ti durerà anni.
La maggior parte degli errori che ho elencato si risolve in meno di cinque minuti se sai dove guardare. Il problema è che la gente modifica file a caso, non legge i log, e poi si lamenta che “XAMPP non funziona”. Impara a leggere error.log e mysql_error.log e il 90% dei tuoi problemi sparirà.