Herramientas de desarrollo

Error de puertos en XAMPP: cómo solucionarlo paso a paso

Por Víctor Peña · Actualizado el

Error de puertos en XAMPP

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.

Panel de control de XAMPP mostrando el error al iniciar Apache y MySQL

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.

Listado de Netstat mostrando el proceso que ocupa el puerto 80

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

Comprobación del puerto 3306 usado por MySQL

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.

  1. Abre Panel de control → Programas → Activar o desactivar las características de Windows.
  2. Busca Internet Information Services.
  3. Desmarca la casilla y acepta.
  4. Reinicia el equipo.

Si es un servicio de Windows

Para el caso de MySQL instalado aparte, o del servicio de publicación web:

  1. Pulsa Windows + R, escribe services.msc y acepta.
  2. Busca el servicio en la lista: MySQL, MySQL80 o World Wide Web Publishing Service.
  3. Clic derecho → Detener.
  4. Para que no vuelva a arrancar solo: clic derecho → PropiedadesTipo 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

Archivo httpd.conf con la configuración de puertos de Apache

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

Archivo my.ini con la configuración del puerto de MySQL

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.

Solicitar cotizaciónVer todos los servicios

Cotización sin costo · Respuesta directa por WhatsApp