Preguntas técnicas de características y respuestas a preguntas tipo qué es

XAMPP non si avvia nel 2026? Gli errori che blocchi il tuo sviluppo

Se stai smanettando con XAMPP e all’improvviso Apache o MySQL si rifiutano di partire, non sei sfigato: è quasi sempre un conflitto di porte o un problema di permessi. Il punto è che la maggior parte delle guide ti dice le stesse cose a memoria, senza spiegarti perché succede. Qui andiamo dritti al sodo, con quello che ho visto succedere decine di volte su Windows 10 e Windows 11 aggiornato.

Perché XAMPP non si avvia: le cause reali (non quelle da manuale)

Il 90% delle volte il problema è che un altro programma ha già occupato la porta 80 o 443. Non è XAMPP che è rotto, è Windows che dà la precedenza a IIS, a Skype, o peggio ancora al servizio “Windows Management Instrumentation” che si mangia la 3306 di MySQL.

Un’altra causa sottovalutata: lanciare XAMPP senza privilegi di amministratore. Windows 11 con le sue politiche di sicurezza blocca il bind delle porte sotto la 1024 se non hai i permessi giusti. Quindi la prima cosa da fare è tasto destro sull’icona di XAMPP > Esegui come amministratore. Sembra banale, ma risolve una marea di casi di “XAMPP Apache non si avvia”.

Poi c’è il fattore aggiornamenti di Windows. Con la versione 24H2 ho visto diversi utenti a cui il firewall di Defender ha iniziato a bloccare mysqld.exe senza motivo apparente. Se MySQL parte e si spegne dopo due secondi, dai un’occhiata agli eventi di Windows prima di dare la colpa a XAMPP.

Come capire quale porta è occupata (comando esatto)

Apri il prompt dei comandi e lancia:

netstat -ano | findstr :80

Ti restituisce il PID del processo che sta usando la porta 80. A quel punto vai in Task Manager, scheda Dettagli, e vedi chi è il colpevole. Spesso è System (PID 4) perché IIS o il servizio HTTP di Windows è attivo. In quel caso, o disattivi IIS da “Funzionalità di Windows”, oppure cambi porta ad Apache.

Stessa cosa per la 443 (HTTPS) e per la 3306 (MySQL). Se la 3306 è occupata, MySQL non partirà mai e ti darà errore “MySQL shutdown unexpectedly”.

Cambiare la porta di Apache in XAMPP (procedura corretta)

Vai in C:xamppapacheconfhttpd.conf, cerca la riga Listen 80 e sostituiscila con Listen 8080 (o un’altra porta libera). Poi cerca ServerName localhost:80 e cambia in ServerName localhost:8080. Salva e riavvia Apache dal pannello di controllo.

Attenzione: se usi virtual host, devi aggiornare anche httpd-vhosts.conf nella cartella extra, altrimenti i siti locali non si caricheranno. E se hai attivato SSL, modifica anche httpd-ssl.conf e cambia Listen 443 in Listen 8443.

Dopo il cambio, ricorda di accedere a http://localhost:8080 e non più a localhost. Sembra ovvio, ma è l’errore che frega tutti.

MySQL non parte? Controlla my.ini e i log

Se MySQL non si avvia, apri C:xamppmysqlbinmy.ini e controlla che non ci siano percorsi sbagliati o parametri duplicati. Un classico è la riga innodb_buffer_pool_size troppo alta per la RAM del tuo PC, che fa crashare il servizio all’avvio.

Poi guarda i log in C:xamppmysqldatamysql_error.log. Lì dentro trovi la vera causa, non quella che immaginavi. Se vedi errori di corruzione InnoDB, puoi provare a recuperare con innodb_force_recovery=1 nel my.ini, ma è una misura temporanea: poi devi esportare i dati e ricreare il database.

Un errore che vedo spesso su Windows 10 è “Unable to open process” quando MySQL tenta di partire. Nella maggior parte dei casi è il firewall o un antivirus di terze parti che blocca l’esecuzione di mysqld.exe. Aggiungi la cartella di XAMPP alle esclusioni e vedrai che si sistema.

Errore “Apache is not started” nel pannello: cosa fare davvero

Prima di reinstallare tutto (che è l’ultima spiaggia, non la prima), apri C:xamppapachelogserror.log e cercalo con il blocco note. Il 99% delle volte trovi scritto qualcosa tipo “could not bind to address 0.0.0.0:80” oppure un errore di sintassi in httpd.conf che hai modificato e salvato male.

Se hai toccato httpd.conf e hai messo una virgoletta di troppo, Apache non parte e non ti dice niente di chiaro. In quel caso ripristina il file originale dalla cartella conf/original e ricomincia da capo.

Modificare PHP e php.ini senza rompere XAMPP

Vuoi cambiare versione di PHP? Non copiare e incollare cartelle a caso. Scarica la versione da windows.php.net, scompattala e sostituisci la cartella php dentro XAMPP. Poi apri php.ini e verifica che le estensioni che ti servono siano attive (togli il punto e virgola davanti a extension=…).

Per aumentare il limite di upload, cerca upload_max_filesize e post_max_size, portali a 64M o 128M. Riavvia Apache e controlla con un file phpinfo() che i valori siano cambiati. Se non cambiano, stai modificando il php.ini sbagliato: XAMPP ne ha uno in phpphp.ini e uno in apachebinphp.ini.

UAC, permessi e altre storie che ti fanno perdere tempo

Disattivare l’UAC non è una buona idea, ma se proprio devi, fallo solo temporaneamente. Piuttosto, crea una regola nel firewall per xampp-control.exe e per httpd.exe. Windows 11 con Smart App Control attivo può bloccare componenti di XAMPP senza avvisarti.

Se il pannello di controllo si blocca all’avvio di Apache, spesso è perché stai usando una versione vecchia di XAMPP su Windows 11. Scarica l’ultima release dal sito ufficiale di Apache Friends: le versioni 8.x hanno risolto diversi bug di compatibilità con le porte e con i permessi.

E se dopo tutto questo l’errore persiste, prima di formattare, prova a eseguire XAMPP da una cartella diversa da C:xampp, tipo C:devxampp. A volte è OneDrive o la sincronizzazione di Windows che mette i bastoni tra le ruote ai file di configurazione.