PID: 4 usando el puerto 80

53

Estaba tratando de instalar Zend Server CE en mi computadora, pero cuando llegué al punto en que necesitaba elegir el puerto para mi servidor web, dice: "Puerto del servidor web: 80 ocupados". Así que decidí verificar lo que está usando el Puerto 80 con CMD escribiendo: "netstat -o -n -a | Findstr 0.0: 80":

TCP     0.0.0.0:80     0.0.0.0:0     LISTENING     4

Compruebo el PID: 4 en los procesos y servicios del administrador de tareas. Parece que PID 4 es "Sistema".

Entonces, lo que quiero saber es ¿cómo puedo evitar que "System" (PID: 4) use el Puerto 80?

INFORMACIÓN: Estoy usando: Windows 7 64bit; Zend Server CE 5.5.0

apokaliptis
fuente
No estaría de más hacer un telnet con un "GET / HTTP / 1.1" a 127.0.0.1 y ver qué ocurre.
LawrenceC
@ultrasawblade ¿Cómo hago exactamente eso?
apokaliptis
1
Corre telnet 127.0.0.1 80y luego pasa esa línea y presiona Enter dos veces. Si está ejecutando Windows 7, primero debe instalar el cliente telnet desde "Agregar y quitar funciones de Windows".
billc.cn
1
El servicio de publicación World Wide Web en Windows 8 64 para mí hizo el truco.
2
El estado del servicio HTTP puede ayudarlo a identificar los servicios en ejecución en caso de PID 4. Ejecute netsh http show servicestatey mire las URL registradas o la información de registro .
pazadev

Respuestas:

78

Ok, después de buscar en la web por un tiempo, encontré una solución a mi problema.

Simplemente siga estos pasos para diagnosticar y resolver su problema:

  1. Obtenga pid que está escuchando el puerto 80: netstat -nao | find ":80"

  2. Abra el administrador de tareas, vaya a la pestaña de procesos y marque "PID" Menu/View/Select Columns…, luego busque el proceso utilizando el PID que se encuentra en el último paso.

  3. Si es una aplicación normal o IIS, desactívela o desinstálela. Algunos programas (como Skype) tienen la opción de deshabilitar su uso del puerto 80.

  4. Si se trata de un proceso del sistema ( PID 4), debe deshabilitar el controlador HTTP.sys que otro servicio inicia bajo demanda, como Windows Remote Management o Print Spooler en Windows 7 o 2008.

    Hay dos formas de desactivarlo, pero la primera es más segura:

    1)

    • Vaya al administrador de dispositivos, seleccione "mostrar dispositivos ocultos" en el menú / vista, vaya a "Controlador no Plug and Play" / HTTP, haga doble clic para desactivarlo (o configúrelo en manual, algunos servicios dependían de ello).

    • Reinicie y use netstat -nao | find ":80"para verificar si 80 todavía se usa.

    2)

    • Lanzamiento RegEdit.

    • Ir HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP

    • Cambie el valor de "inicio" a 4, lo que significa deshabilitado.

    • Reinicie su computadora.

Mi solución fue el paso 4 .

apokaliptis
fuente
44
¿Dónde está el árbol "Controlador no Plug and Play" en el administrador de dispositivos de Windows Server 2012?
Maria Ines Parnisari
44
El enfoque del administrador de dispositivos no está disponible desde Windows 8 en adelante.
Roddy
1
La solución de registro funcionó en Win8. Extraño Linux.
AlikElzin-kilaka
55
Por favor, modifique esto un poco. Deshabilitar el servicio "HTTP" en Windows deshabilita todas sus dependencias. El servicio específico que utiliza el puerto 80 es "W3SVC" (Servicio de publicación World Wide Web), una dependencia de "HTTP". Esto se puede verificar ejecutando "net stop W3SVC" desde un símbolo del sistema administrativo y luego 'netstat -n -o -a | busque ": 80" 'para verificar que ya no hay nada en el puerto 80. Recomiendo deshabilitar el Servicio de publicación World Wide Web (W3SVC) en su lugar (si no desea deshabilitar SSDP, la cola de impresión, el grupo en el hogar y el descubrimiento de funciones).
chriv
2
No entiendo esta instrucción en absoluto. Go to device manager, select “show hidden devices” from menu/view, go to “Non-Plug and Play Driver”/HTTP, double click it to disable it (or set it to manual, some services depended on it).No hay ningún Non-Plug and Play Driver”/HTTPelemento de menú en ninguna parte.
Martin Erlic
25

Acabo de tener este problema después de instalar Windows 8 Pro - Build 9200. Probé varios métodos pero no pude hacer que ninguno de ellos funcionara. Este, sin embargo, lo arregló.

Debe cambiar la dirección IP enlazada para HTTP.SYS

netsh http add iplisten ipaddress=::

http://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/

neojp
fuente
Esta solución es excelente cuando necesita ejecutar un servidor que no use http.sys y uno que sí lo haga.
Thor Jacobsen
También funcionó para mí. ¿Pero qué hace realmente?
akame
1
Pensé que esto solucionó mi problema porque liberó el puerto, pero también tuvo otros efectos secundarios. Específicamente, no pude vincularme a nombres de host específicos a través de IIS después de este cambio. Para deshacer solíanetsh http delete iplisten ipaddress=::
cchamberlain
Esto funcionó para mí, pero tuvo efectos secundarios. Consulte mi respuesta a continuación para ver una posible alternativa que utiliza el mismo comando, pero una dirección IP diferente.
Dave Morton
6

En mi caso fue WebMatrix. Vea las posibles soluciones (incluida esta) aquí: http://www.sitepoint.com/unblock-port-80-on-windows-run-apache/

Básicamente:

Abra Servicios desde Herramientas administrativas y busque "Servicio de agente de implementación web". Detenga el servicio y configure su tipo de inicio en "Manual".

El servicio del Agente de implementación web se implementó con WebMatrix y fue la causa de mis problemas. También se puede distribuir con otras aplicaciones instaladas utilizando el Instalador de plataforma web de Microsoft.

Martín Coll
fuente
También el problema que tenía (en Windows 10)
toby1kenobi
5

PID 4 está codificado para ser el proceso "Sistema" que forma parte del núcleo del sistema.

Si el puerto está ocupado por el sistema, probablemente haya habilitado IIS. Ver https://stackoverflow.com/questions/1430141/port-80-is-being-used-by-system-pid-4-what-is-that

billc.cn
fuente
He desinstalado IIS 7.5 Express pensando que ayudaría. Tal vez tengo que reiniciar? Voy a probar eso.
apokaliptis
No. El problema aún persiste.
apokaliptis
¿También tiene instalado IIS 7.0 (el que se incluye con Windows 7)? Normalmente, si solo detiene w3svc, el puerto se cerrará.
billc.cn
No. Y que yo sepa, tampoco debería tener otros servidores web instalados.
apokaliptis
¿Podría ejecutar netstat nuevamente pero solo publicar los puertos que ESTÁN ESCUCHANDO?
billc.cn
1

Si bien el uso del comando netsh http add iplisten ipaddress=::permitió que Apache se iniciara en mi sistema Windows 10 de 64 bits, causó estragos al intentar acceder a localhost, ya que estaba obligado a ::hacerlo 127.0.0.1, incluso con la entrada correcta en mi archivo de hosts. Lo que terminé haciendo fue usar este comando en su lugar: netsh http add iplisten ipaddress=0.0.0.0 esto no solo funcionó, sino que también permitió el acceso del navegador a localhost. Para mí, esta fue una solución superior.

Dave Morton
fuente
0

Abra la lista de servicios Busque "Servicio de publicación en la World Wide Web" Deténgalo y configúrelo en Manual

Aaron
fuente