Herramientas de desarrollo
Error de puertos en XAMPP: cómo solucionarlo paso a paso
Por Víctor Peña · Actualizado el

Hola, ¿cómo están? Si acabas de instalar XAMPP y al pulsar Start en Apache o MySQL aparece un error en rojo en lugar de arrancar, estás en el sitio correcto.
Es el problema más frecuente de XAMPP, y en el 95 % de los casos tiene la misma causa: otro programa ya está usando el puerto que XAMPP necesita.
¡Empecemos!
Cómo se ve el error
Al iniciar el servicio, el panel de control muestra un mensaje parecido a este:
Error: Apache shutdown unexpectedly.
This may be due to a blocked port, missing dependencies,
improper privileges, a crash, or a shutdown by another method.
O en el caso de MySQL:
Error: MySQL shutdown unexpectedly.

Por qué ocurre
Un puerto es como el número de una puerta: solo un programa puede estar detrás de cada una.
XAMPP necesita tres puertos:
| Servicio | Puerto | Para qué |
|---|---|---|
| Apache | 80 | Servir páginas por HTTP |
| Apache SSL | 443 | Servir páginas por HTTPS |
| MySQL | 3306 | Conexiones a la base de datos |
Si otro programa ya ocupa alguno, XAMPP no puede iniciarlo y falla.
Los culpables habituales
Puerto 80 (Apache):
- IIS, el servidor web que viene con Windows. Es la causa más frecuente.
- Skype en versiones antiguas.
- World Wide Web Publishing Service, un servicio de Windows.
- Otro servidor local como Laragon o WAMP corriendo a la vez.
Puerto 443:
- VMware, que lo usa para su consola web.
Puerto 3306 (MySQL):
- Otra instalación de MySQL corriendo como servicio de Windows. Muy común si antes instalaste MySQL por separado.
- MySQL Workbench con su propio servidor incluido.
Paso 1: identificar quién ocupa el puerto
XAMPP trae una herramienta para esto y mucha gente no la conoce.
En el panel de control, pulsa el botón Netstat. Se abre una ventana con todos los puertos en uso y qué programa los tiene.
Busca el puerto 80 o el 3306 en la lista y anota el nombre del proceso.

Desde la línea de comandos
También puedes averiguarlo desde una terminal. Abre el símbolo del sistema y ejecuta:
netstat -ano | findstr :80
La última columna es el PID, el identificador del proceso. Para saber a qué programa corresponde:
tasklist | findstr <el-numero-de-PID>
Y para el puerto de MySQL:
netstat -ano | findstr :3306

En Linux o macOS el comando equivalente es:
sudo lsof -i :80
Paso 2: decidir qué hacer
Con el culpable identificado, tienes dos caminos.
Opción A: liberar el puerto, cerrando o desactivando el programa que lo ocupa. Es lo mejor si ese programa no te hace falta.
Opción B: cambiar el puerto de XAMPP, dejando al otro programa en paz. Es lo mejor si sí lo necesitas.
Vamos con las dos.
Opción A: liberar el puerto
Si el culpable es IIS
IIS viene activado en algunas instalaciones de Windows y ocupa el puerto 80 sin que lo hayas pedido.
- Abre Panel de control → Programas → Activar o desactivar las características de Windows.
- Busca Internet Information Services.
- Desmarca la casilla y acepta.
- Reinicia el equipo.
Si es un servicio de Windows
Para el caso de MySQL instalado aparte, o del servicio de publicación web:
- Pulsa
Windows + R, escribeservices.mscy acepta. - Busca el servicio en la lista: MySQL, MySQL80 o World Wide Web Publishing Service.
- Clic derecho → Detener.
- Para que no vuelva a arrancar solo: clic derecho → Propiedades → Tipo de inicio: Deshabilitado.
Ese último paso es importante. Si solo lo detienes, al reiniciar Windows vuelve a ocupar el puerto y el problema reaparece.
Desde la terminal, como administrador
net stop "MySQL80"
net stop "W3SVC"
Opción B: cambiar el puerto de XAMPP
Si necesitas mantener el otro programa, cambia el puerto que usa XAMPP.
Cambiar el puerto de Apache
En el panel de control, pulsa Config en la fila de Apache y elige Apache (httpd.conf). Se abre el archivo en el bloc de notas.
Busca estas dos líneas y cambia el 80 por 8080:
Listen 80
ServerName localhost:80
Deben quedar así:
Listen 8080
ServerName localhost:8080

Guarda el archivo.
Ahora hay que hacer lo mismo con el puerto SSL. Config → Apache (httpd-ssl.conf) y cambia:
Listen 443
<VirtualHost _default_:443>
ServerName www.example.com:443
Por el 4433.
Importante: al cambiar el puerto de Apache, tus proyectos ya no se abren en localhost sino en:
localhost:8080/mi-proyecto
Es el detalle que más confunde después del cambio: la página no carga y uno piensa que sigue roto, cuando en realidad solo falta el número de puerto en la dirección.
Cambiar el puerto de MySQL
Aquí hay que tocar dos archivos, y saltarse el segundo es el error más común.
Primero: Config → my.ini en la fila de MySQL. Busca la sección [mysqld] y cambia:
port=3306
Por:
port=3307

Segundo: en ese mismo archivo hay otra sección [client] con su propio port=3306. Cámbiala también.
Tercero, y el que se olvida: phpMyAdmin sigue buscando MySQL en el 3306. Abre C:\xampp\phpMyAdmin\config.inc.php y añade:
$cfg['Servers'][$i]['port'] = '3307';
Sin ese último paso, phpMyAdmin no conecta aunque MySQL esté funcionando.
Y en tus proyectos, la conexión también cambia:
<?php
$dsn = 'mysql:host=127.0.0.1;port=3307;dbname=tienda;charset=utf8mb4';
Paso 3: comprobar que funciona
Vuelve al panel de XAMPP y pulsa Start en Apache y MySQL. Ambos deberían ponerse en verde con sus números de puerto al lado.
Abre el navegador y entra a localhost —o localhost:8080 si cambiaste el puerto—. Si ves la página de bienvenida de XAMPP, está resuelto.
Si aun así no arranca
El error de puertos es la causa más frecuente, pero no la única. Si Netstat no muestra ningún conflicto, revisa esto:
Ejecuta XAMPP como administrador. Clic derecho en el icono → Ejecutar como administrador. Los puertos por debajo del 1024 requieren permisos elevados en algunos sistemas.
Revisa el antivirus o el firewall. Algunos bloquean los binarios de servidor. Añade la carpeta de XAMPP a las excepciones.
Mira el registro de errores. En el panel, botón Logs → Apache (error.log). Ahí está el motivo exacto, y suele decirlo con claridad.
Comprueba dónde instalaste XAMPP. Si está dentro de Archivos de programa, los permisos restringidos de esa carpeta causan fallos difíciles de diagnosticar. Lo correcto es C:\xampp.
MySQL corrupto tras un apagado brusco. Si el error menciona InnoDB o ib_logfile, es otro problema distinto: la solución pasa por restaurar la carpeta data desde backup.
Cómo evitarlo desde el principio
- No instales dos entornos locales a la vez. XAMPP y Laragon pelean por los mismos puertos. Ten los dos si quieres, pero ejecuta solo uno.
- Si ya tenías MySQL instalado aparte, deshabilita su servicio antes de instalar XAMPP.
- Desactiva IIS si no lo usas.
Para cerrar
El error de puertos en XAMPP asusta por el mensaje en rojo, pero el diagnóstico es sencillo: Netstat te dice quién ocupa el puerto, y a partir de ahí solo hay que decidir si liberarlo o moverse a otro.
Y recuerda el detalle que más tiempo hace perder: si cambias el puerto de Apache, tus proyectos van en localhost:8080; y si cambias el de MySQL, hay que actualizar también phpMyAdmin y la conexión de tus aplicaciones.
Si quieres conocer mejor la herramienta, en qué es XAMPP repasamos qué incluye y cómo se usa.
Saludos y éxitos.
Norvic Software
Desarrollamos el software que tu empresa necesita
Somos una fábrica de software en Bolivia. Construimos sistemas a medida y aplicaciones móviles, y llevamos Inteligencia Artificial a las empresas que ya tienen un sistema funcionando.
- Chatbots con Inteligencia Artificial
- Creación de agentes de IA
- Integración de IA en tus sistemas
- Desarrollo de software a medida
- Aplicaciones móviles iOS y Android
- Consultoría y asesoramiento técnico
Cotización sin costo · Respuesta directa por WhatsApp