- 🧭 Introducción
- 🧩 Instalación de XAMPP
- 🟢 Primer inicio de Apache
- ❗ Problemas comunes y soluciones
- ⚙️ Comandos útiles de diagnóstico
- 🌐 Configurar hosts virtuales (dominios locales)
- 🧠 Consejos y problemas frecuentes
- 🎯 Resumen
- 📚 Conclusión
🧭 Introducción
XAMPP es un paquete de servidor local que incluye Apache, MySQL (MariaDB), PHP y Perl.
El servicio Apache es el núcleo: sirve tu sitio web cuando abres http://localhost.
Sin embargo, muchos desarrolladores encuentran errores al intentar iniciarlo:
- ❌ “Error al iniciar el servicio Apache2.4. Código 1”
- ⚠️ “El puerto 80 está en uso”
- 🔒 “Tu conexión no es privada” o “NET::ERR_CERT_COMMON_NAME_INVALID”
Esta guía te explica cada paso — desde la instalación hasta la resolución de los errores más comunes.
🧩 Instalación de XAMPP
- Descarga la última versión de XAMPP desde el sitio oficial:
👉 https://www.apachefriends.org/download.html - Instala XAMPP en una ruta simple (sin espacios ni caracteres especiales), por ejemplo:
E:\xampp - Después de la instalación, ejecuta XAMPP Control Panel como Administrador.
🟢 Primer inicio de Apache
- En el panel de XAMPP, haz clic en Start junto a Apache.
- Si todo está bien, verás:
Apache ... running - Abre en el navegador:
http://localhost/Deberías ver la página de bienvenida de XAMPP.
Si Apache no se inicia — sigue leyendo.
❗ Problemas comunes y soluciones
⚙️ 1. “Error al iniciar el servicio Apache2.4. Código 1”
Causa: archivo de configuración dañado o falta la clave SSL.
Comprobación:
Abre PowerShell o CMD como administrador:
cd E:\xampp\apache\bin
.\httpd.exe -t
Si ves:
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
entonces falta el certificado SSL.
Solución:
Genera un nuevo certificado autofirmado:
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"
Puedes presionar Enter en todos los campos o escribir tus datos:
País: IL Estado: Israel Ciudad: Jerusalem Organización: hypo69 Nombre común: localhost
🔒 2. “Tu conexión no es privada” o NET::ERR_CERT_COMMON_NAME_INVALID
Causa: los navegadores modernos (Chrome, Edge, Firefox) ya no confían en certificados con solo CN=localhost.
Requieren el campo subjectAltName (SAN).
Solución:
- Crea un nuevo archivo:
E:\xampp\apache\conf\openssl-local.cnf - Pega este contenido:
[ req ] default_bits = 2048 prompt = no default_md = sha256 x509_extensions = v3_req distinguished_name = req_distinguished_name [ req_distinguished_name ] C = IL ST = Israel L = Jerusalem O = hypo69 OU = Dev CN = localhost [ v3_req ] subjectAltName = @alt_names [ alt_names ] DNS.1 = localhost IP.1 = 127.0.0.1 - Genera el nuevo certificado:
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" - Añádelo al almacén de certificados de confianza de Windows:
Import-Certificate -FilePath "E:\xampp\apache\conf\ssl\server.crt" ` -CertStoreLocation Cert:\LocalMachine\Root(o manualmente: Instalar certificado → Equipo local → Entidades de certificación raíz de confianza) - Reinicia Apache:
net stop apache2.4 net start apache2.4
✅ Ahora https://localhost y https://127.0.0.1 deberían abrirse sin advertencias.
🔌 3. “El puerto 80 o 443 ya está en uso”
Comprobación:
netstat -ano | findstr :80
netstat -ano | findstr :443
Si está ocupado, encuentra el proceso:
tasklist | findstr <PID>
Culpables comunes:
- Skype
- IIS (World Wide Web Publishing Service)
- VMware
- Edge Update Service
Solución:
- Detén o desactiva el servicio que ocupa el puerto.
- O cambia los puertos de Apache:
Edita E:\xampp\apache\conf\httpd.conf:
Listen 80
→ cambia a:
Listen 8080
Luego en E:\xampp\apache\conf\extra\httpd-ssl.conf:
Listen 443
→ cambia a:
Listen 8443
Ahora abre:
http://localhost:8080
https://localhost:8443
🔥 4. “Service Control Manager 7024: función incorrecta”
Causa: el registro del servicio Apache en Windows está dañado.
Solución:
Vuelve a registrar Apache:
cd E:\xampp\apache\bin
httpd.exe -k uninstall
httpd.exe -k install
📄 5. Registros de errores de Apache
Todos los errores se guardan en:
E:\xampp\apache\logs\error.log
Lee las últimas líneas:
Get-Content E:\xampp\apache\logs\error.log -Tail 30
⚙️ Comandos útiles de diagnóstico
| Comando | Descripción |
|---|---|
httpd.exe -t | Verifica la configuración de Apache |
httpd.exe -S | Muestra los hosts virtuales |
net start apache2.4 | Inicia el servicio Apache |
net stop apache2.4 | Detiene el servicio Apache |
netstat -ano | Muestra los puertos activos |
| `tasklist | findstr PID` |
certmgr.msc | Abre el administrador de certificados |
services.msc | Abre la lista de servicios de Windows |
🌐 Configurar hosts virtuales (dominios locales)
Puedes hacer que tu proyecto billing-crm abra en https://crm.local en lugar de localhost/billing-crm.
- Edita el archivo hosts:
C:\Windows\System32\drivers\etc\hostsAñade:127.0.0.1 crm.local - Edita:
E:\xampp\apache\conf\extra\httpd-vhosts.confAñade:<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 configuración:
httpd.exe -t - Reinicia Apache y abre:
https://crm.local
🧠 Consejos y problemas frecuentes
| Problema | Causa | Solución |
|---|---|---|
| Apache no inicia al arrancar | conflicto de puertos | inicia XAMPP manualmente |
| “Conexión no segura” | falta SAN | recrear certificado con alt_names |
| HTTPS no responde | puerto o clave incorrecta | revisar httpd-ssl.conf |
| Firefox muestra advertencia | usa su propio almacén | importar server.crt manualmente |
index.php vacío | error en el proyecto | restaurar desde Git o copia |
🎯 Resumen
| Paso | Objetivo | Comando |
|---|---|---|
| Verificar configuración | Validar sintaxis de Apache | httpd.exe -t |
| Generar SSL | Crear certificado para localhost | openssl req -config ... |
| Confiar en el certificado | Evitar advertencias HTTPS | Import-Certificate |
| Revisar puertos | Comprobar 80/443 | netstat -ano |
| Iniciar Apache | Ejecutar el servicio | net start apache2.4 |
📚 Conclusión
Después de seguir estos pasos:
- Apache se ejecuta sin errores.
- HTTPS funciona sin advertencias del navegador.
localhost,127.0.0.1y dominios comocrm.localson completamente confiables.- Puedes desarrollar y probar sitios web localmente igual que en un entorno de producción.