- 🧭 Introduzione
- 🧩 Installazione di XAMPP
- 🟢 Primo avvio di Apache
- ❗ Problemi comuni e soluzioni
- ⚙️ Comandi utili di diagnostica
- 🌐 Configurare host virtuali (domini locali)
- 🧠 Suggerimenti e problemi comuni
- 🎯 Riepilogo
- 📚 Conclusione
🧭 Introduzione
XAMPP è un pacchetto di server locale che include Apache, MySQL (MariaDB), PHP e Perl.
Il servizio Apache è il cuore del sistema: gestisce il tuo sito web quando apri http://localhost.
Tuttavia, molti sviluppatori incontrano errori durante l’avvio di Apache:
- ❌ “Impossibile avviare il servizio Apache2.4. Codice errore 1”
- ⚠️ “La porta 80 è già in uso”
- 🔒 “La connessione non è privata” o “NET::ERR_CERT_COMMON_NAME_INVALID”
Questa guida illustra ogni passaggio — dall’installazione alla risoluzione di tutti i problemi più comuni.
🧩 Installazione di XAMPP
- Scarica l’ultima versione di XAMPP dal sito ufficiale:
👉 https://www.apachefriends.org/download.html - Installa XAMPP in un percorso semplice (senza spazi o caratteri speciali), ad esempio:
E:\xampp - Dopo l’installazione, apri XAMPP Control Panel come amministratore.
🟢 Primo avvio di Apache
- Nel pannello di controllo XAMPP, fai clic su Start accanto ad Apache.
- Se tutto funziona, vedrai:
Apache ... running - Apri nel browser:
http://localhost/Dovresti vedere la pagina di benvenuto di XAMPP.
Se Apache non si avvia — continua a leggere.
❗ Problemi comuni e soluzioni
⚙️ 1. “Impossibile avviare il servizio Apache2.4. Codice errore 1”
Causa: file di configurazione danneggiato o chiave SSL mancante.
Verifica:
Apri PowerShell o CMD come amministratore:
cd E:\xampp\apache\bin
.\httpd.exe -t
Se compare:
AH00526: Syntax error on line 158 of E:/xampp/apache/conf/extra/httpd-ssl.conf:
SSLCertificateKeyFile: file 'E:/xampp/apache/conf/ssl/server.key' does not exist or is empty
il certificato SSL è mancante.
Soluzione:
Genera un nuovo certificato autofirmato:
cd E:\xampp\apache\bin
.\openssl.exe req -x509 -nodes -days 1095 -newkey rsa:2048 `
-keyout "../conf/ssl/server.key" `
-out "../conf/ssl/server.crt"
Puoi semplicemente premere Invio su ogni campo o inserire le tue informazioni:
Paese: IT Stato: Italia Città: Roma Organizzazione: hypo69 Nome comune: localhost
🔒 2. “La connessione non è privata” o NET::ERR_CERT_COMMON_NAME_INVALID
Causa: i browser moderni (Chrome, Edge, Firefox) non accettano più certificati con solo CN=localhost.
Richiedono il campo subjectAltName (SAN).
Soluzione:
- Crea un nuovo file:
E:\xampp\apache\conf\openssl-local.cnf - Incolla questo contenuto:
[ req ] default_bits = 2048 prompt = no default_md = sha256 x509_extensions = v3_req distinguished_name = req_distinguished_name [ req_distinguished_name ] C = IT ST = Italia L = Roma O = hypo69 OU = Dev CN = localhost [ v3_req ] subjectAltName = @alt_names [ alt_names ] DNS.1 = localhost IP.1 = 127.0.0.1 - Genera il certificato:
cd E:\xampp\apache\bin .\openssl.exe req -config "E:\xampp\apache\conf\openssl-local.cnf" ` -x509 -nodes -days 1095 -newkey rsa:2048 ` -keyout "../conf/ssl/server.key" ` -out "../conf/ssl/server.crt" - Aggiungilo all’archivio dei certificati attendibili di Windows:
Import-Certificate -FilePath "E:\xampp\apache\conf\ssl\server.crt" ` -CertStoreLocation Cert:\LocalMachine\Root(oppure manualmente: Installa certificato → Computer locale → Autorità di certificazione radice attendibili) - Riavvia Apache:
net stop apache2.4 net start apache2.4
✅ Ora https://localhost e https://127.0.0.1 dovrebbero aprirsi senza avvisi.
🔌 3. “La porta 80 o 443 è già in uso”
Verifica:
netstat -ano | findstr :80
netstat -ano | findstr :443
Se una porta è occupata, trova il processo:
tasklist | findstr <PID>
Casi più comuni:
- Skype
- IIS (World Wide Web Publishing Service)
- VMware
- Edge Update Service
Soluzione:
- Arresta o disattiva il servizio in conflitto.
- Oppure modifica le porte di Apache:
Modifica E:\xampp\apache\conf\httpd.conf:
Listen 80
→ cambia in:
Listen 8080
Poi in E:\xampp\apache\conf\extra\httpd-ssl.conf:
Listen 443
→ cambia in:
Listen 8443
Apri:
http://localhost:8080
https://localhost:8443
🔥 4. “Service Control Manager 7024: funzione non valida”
Causa: il registro di servizio Apache in Windows è corrotto.
Soluzione:
Reinstalla il servizio Apache:
cd E:\xampp\apache\bin
httpd.exe -k uninstall
httpd.exe -k install
📄 5. File di log di Apache
Tutti i log si trovano qui:
E:\xampp\apache\logs\error.log
Visualizza le ultime righe:
Get-Content E:\xampp\apache\logs\error.log -Tail 30
⚙️ Comandi utili di diagnostica
| Comando | Descrizione |
|---|---|
httpd.exe -t | Verifica la configurazione di Apache |
httpd.exe -S | Mostra gli host virtuali |
net start apache2.4 | Avvia il servizio Apache |
net stop apache2.4 | Arresta il servizio Apache |
netstat -ano | Mostra le porte attive |
| `tasklist | findstr PID` |
certmgr.msc | Apre il gestore dei certificati |
services.msc | Apre la console dei servizi di Windows |
🌐 Configurare host virtuali (domini locali)
Puoi far sì che il tuo progetto billing-crm si apra su https://crm.local invece di localhost/billing-crm.
- Modifica il file hosts:
C:\Windows\System32\drivers\etc\hostsAggiungi:127.0.0.1 crm.local - Modifica:
E:\xampp\apache\conf\extra\httpd-vhosts.confAggiungi:<VirtualHost *:443> ServerName crm.local DocumentRoot "E:/xampp/htdocs/billing-crm" SSLEngine on SSLCertificateFile "E:/xampp/apache/conf/ssl/server.crt" SSLCertificateKeyFile "E:/xampp/apache/conf/ssl/server.key" </VirtualHost> - Verifica la configurazione:
httpd.exe -t - Riavvia Apache e apri:
https://crm.local
🧠 Suggerimenti e problemi comuni
| Problema | Causa | Soluzione |
|---|---|---|
| Apache non si avvia all’avvio di Windows | conflitto di porte | avvia XAMPP manualmente |
| “Connessione non sicura” | mancanza di SAN | rigenera il certificato con alt_names |
| HTTPS non risponde | porta o chiave errata | controlla httpd-ssl.conf |
| Firefox mostra ancora un avviso | usa un archivio certificati separato | importa server.crt manualmente |
index.php vuoto | errore nel progetto | ripristina da Git o da un backup |
🎯 Riepilogo
| Passaggio | Obiettivo | Comando |
|---|---|---|
| Verifica configurazione | Controlla la sintassi di Apache | httpd.exe -t |
| Genera SSL | Crea un certificato localhost | openssl req -config ... |
| Rendi attendibile il certificato | Elimina avvisi HTTPS | Import-Certificate |
| Controlla porte | Verifica 80/443 | netstat -ano |
| Avvia Apache | Esegui il servizio | net start apache2.4 |
📚 Conclusione
Dopo questi passaggi:
- Apache si avvia correttamente senza errori.
- HTTPS funziona senza avvisi del browser.
localhost,127.0.0.1e domini comecrm.localsono completamente attendibili.- Puoi sviluppare e testare siti web localmente come su un vero server di produzione.