Saltar al contenido
> 💻 🧠 Código 1001 > 🧪📓 Sin categoría > 🚀 Guía completa: cómo ejecutar Apache en XAMPP en Windows (con todos los problemas comunes)

🚀 Guía completa: cómo ejecutar Apache en XAMPP en Windows (con todos los problemas comunes)

  • por

🧭 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

  1. Descarga la última versión de XAMPP desde el sitio oficial:
    👉 https://www.apachefriends.org/download.html
  2. Instala XAMPP en una ruta simple (sin espacios ni caracteres especiales), por ejemplo: E:\xampp
  3. Después de la instalación, ejecuta XAMPP Control Panel como Administrador.

🟢 Primer inicio de Apache

  1. En el panel de XAMPP, haz clic en Start junto a Apache.
  2. Si todo está bien, verás: Apache ... running
  3. 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:

  1. Crea un nuevo archivo: E:\xampp\apache\conf\openssl-local.cnf
  2. 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
  3. 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"
  4. 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)
  5. 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:

  1. Detén o desactiva el servicio que ocupa el puerto.
  2. 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

ComandoDescripción
httpd.exe -tVerifica la configuración de Apache
httpd.exe -SMuestra los hosts virtuales
net start apache2.4Inicia el servicio Apache
net stop apache2.4Detiene el servicio Apache
netstat -anoMuestra los puertos activos
`tasklistfindstr PID`
certmgr.mscAbre el administrador de certificados
services.mscAbre 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.

  1. Edita el archivo hosts: C:\Windows\System32\drivers\etc\hosts Añade: 127.0.0.1 crm.local
  2. Edita: E:\xampp\apache\conf\extra\httpd-vhosts.conf Añ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>
  3. Verifica la configuración: httpd.exe -t
  4. Reinicia Apache y abre: https://crm.local

🧠 Consejos y problemas frecuentes

ProblemaCausaSolución
Apache no inicia al arrancarconflicto de puertosinicia XAMPP manualmente
“Conexión no segura”falta SANrecrear certificado con alt_names
HTTPS no respondepuerto o clave incorrectarevisar httpd-ssl.conf
Firefox muestra advertenciausa su propio almacénimportar server.crt manualmente
index.php vacíoerror en el proyectorestaurar desde Git o copia

🎯 Resumen

PasoObjetivoComando
Verificar configuraciónValidar sintaxis de Apachehttpd.exe -t
Generar SSLCrear certificado para localhostopenssl req -config ...
Confiar en el certificadoEvitar advertencias HTTPSImport-Certificate
Revisar puertosComprobar 80/443netstat -ano
Iniciar ApacheEjecutar el servicionet 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.1 y dominios como crm.local son completamente confiables.
  • Puedes desarrollar y probar sitios web localmente igual que en un entorno de producción.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *