PID: 4 โดยใช้พอร์ต 80


53

ฉันพยายามติดตั้ง Zend Server CE บนคอมพิวเตอร์ของฉัน แต่เมื่อฉันมาถึงจุดที่ฉันต้องเลือกพอร์ตสำหรับเว็บเซิร์ฟเวอร์ของฉันมันพูดว่า: "Web Server Port: 80 Occupied" ดังนั้นฉันจึงตัดสินใจตรวจสอบสิ่งที่ใช้พอร์ต 80 กับ CMD โดยพิมพ์: "netstat -o -n -a | findstr 0.0: 80":

TCP     0.0.0.0:80     0.0.0.0:0     LISTENING     4

ฉันตรวจสอบ PID: 4 ในกระบวนการและบริการของตัวจัดการงาน ดูเหมือนว่า PID 4 คือ "ระบบ"

ดังนั้นสิ่งที่ฉันอยากรู้คือฉันจะหยุด "ระบบ" (PID: 4) จากการใช้พอร์ต 80 ได้อย่างไร

ข้อมูล: ฉันใช้: Windows 7 64 บิต; Zend Server CE 5.5.0


จะไม่ทำให้ telnet เป็น "GET / HTTP / 1.1" ถึง 127.0.0.1 และดูว่ามีอะไรเกิดขึ้นบ้าง
LawrenceC

@ultrasawblade ฉันจะทำเช่นนั้นได้อย่างไร?
apokaliptis

1
เรียกใช้telnet 127.0.0.1 80แล้วผ่านบรรทัดนั้นแล้วกด Enter สองครั้ง หากคุณใช้ Windows 7 คุณจะต้องติดตั้งไคลเอ็นต์ telnet จาก "เพิ่มและลบคุณลักษณะ Windows" ก่อน
billc.cn

1
บริการ World Wide Web Publishing ใน Windows 8 64 สำหรับฉันฉันได้ทำการหลอกลวง

2
รัฐบริการ HTTP สามารถช่วยให้คุณระบุบริการการทำงานในกรณีของ PID 4. Run netsh http show servicestateและมองไปที่URL ที่ลงทะเบียนหรือข้อมูลการเข้าสู่ระบบ
pazadev

คำตอบ:


78

ตกลงหลังจากค้นหาเว็บสักระยะหนึ่งฉันพบวิธีแก้ไขปัญหาของฉัน

เพียงทำตามขั้นตอนเหล่านี้เพื่อวินิจฉัยและแก้ไขปัญหาของคุณ:

  1. รับ pid ที่กำลังฟังพอร์ต 80: netstat -nao | find ":80"

  2. เปิดตัวจัดการงานไปที่แท็บกระบวนการและตรวจสอบ“ PID” ในMenu/View/Select Columns…จากนั้นค้นหากระบวนการโดยใช้ PID ที่พบในขั้นตอนสุดท้าย

  3. หากเป็นแอปพลิเคชันปกติหรือ IIS ให้ปิดใช้งานหรือถอนการติดตั้ง บางโปรแกรม (เช่น Skype) มีตัวเลือกให้ปิดการใช้งานพอร์ต 80

  4. หากเป็นกระบวนการระบบ - รหัส 4 - คุณต้องปิดการใช้งานไดรเวอร์ HTTP.sys ซึ่งเริ่มทำงานตามความต้องการโดยบริการอื่นเช่น Windows Remote Management หรือ Print Spooler ใน Windows 7 หรือ 2008

    มีสองวิธีในการปิดใช้งาน แต่วิธีแรกปลอดภัยกว่า:

    1

    • ไปที่ตัวจัดการอุปกรณ์เลือก“ แสดงอุปกรณ์ที่ซ่อนอยู่” จากเมนู / มุมมองไปที่“ Non-Plug and Play Driver” / HTTP ดับเบิลคลิกเพื่อปิดการใช้งาน (หรือตั้งเป็นคู่มือด้วยตนเองบริการบางอย่างขึ้นอยู่กับมัน)

    • รีบูตและใช้netstat -nao | find ":80"เพื่อตรวจสอบว่า 80 ยังคงใช้อยู่

    2

    • เปิดใช้ RegEdit

    • ไปที่ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP

    • เปลี่ยนค่าของ "start" เป็น 4 ซึ่งหมายถึงปิดใช้งาน

    • รีบูทคอมพิวเตอร์ของคุณ

วิธีการแก้ปัญหาของผมก็คือขั้นตอนที่4


4
ทรี "Non-Plug and Play Driver" อยู่ที่ไหนในตัวจัดการอุปกรณ์ของ Windows Server 2012
Maria Ines Parnisari

4
วิธีการจัดการอุปกรณ์ไม่สามารถใช้ได้จาก Windows 8 เป็นต้นไป
Roddy

1
โซลูชันรีจิสตรีใช้งานได้กับ Win8 ฉันคิดถึงลีนุกซ์
AlikElzin-kilaka

5
กรุณาปรับแต่งนี้เล็กน้อย การปิดใช้งานบริการ "HTTP" ใน Windows จะปิดใช้งานการอ้างอิงทั้งหมด บริการเฉพาะที่ใช้พอร์ต 80 คือ "W3SVC" (The World Wide Web Publishing Service) การพึ่งพา "HTTP" สามารถตรวจสอบได้โดยการเรียกใช้ "net stop W3SVC" จากพรอมต์คำสั่งการดูแลระบบจากนั้น 'netstat -n -o -a | ค้นหา ": 80" 'เพื่อตรวจสอบว่าไม่มีรายการใด ๆ บนพอร์ต 80 อีกต่อไป ฉันแนะนำให้ปิดการใช้งาน World Wide Web Publishing Service (W3SVC) แทน (หากคุณไม่ต้องการปิดการใช้งาน SSDP, Print Spooler, HomeGroup และ Function Discovery)
chriv

2
ฉันไม่เข้าใจคำสั่ง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).นี้เลยไม่มีNon-Plug and Play Driver”/HTTPรายการเมนูเลย
Martin Erlic

25

ฉันเพิ่งมีปัญหานี้หลังจากติดตั้ง Windows 8 Pro - Build 9200 ฉันลองหลายวิธี แต่ไม่สามารถใช้งานได้ อย่างไรก็ตามอันนี้คงไว้

คุณต้องเปลี่ยนที่อยู่ IP ที่เชื่อมโยงสำหรับ HTTP.SYS

netsh http add iplisten ipaddress=::

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


วิธีแก้ปัญหานี้ยอดเยี่ยมเมื่อคุณต้องการเรียกใช้เซิร์ฟเวอร์ที่ไม่ได้ใช้ http.sys และทั้งสองวิธีใช้
Thor Jacobsen

ทำงานให้ฉันด้วย มันทำอะไรได้จริง?
akame

1
ฉันคิดว่าสิ่งนี้แก้ไขปัญหาของฉันเพราะมันทำให้พอร์ตว่าง แต่ก็มีผลข้างเคียงอื่น ๆ โดยเฉพาะฉันไม่สามารถผูกกับชื่อโฮสต์เฉพาะผ่าน IIS หลังจากการเปลี่ยนแปลงนี้ ในการเลิกทำฉันใช้netsh http delete iplisten ipaddress=::
cchamberlain

สิ่งนี้ได้ผลสำหรับฉัน แต่มีผลข้างเคียง โปรดดูคำตอบของฉันด้านล่างสำหรับทางเลือกที่เป็นไปได้ที่ใช้คำสั่งเดียวกัน แต่เป็นที่อยู่ IP อื่น
เดฟมอร์ตัน

6

ในกรณีของฉันมันเป็น WebMatrix ดูวิธีแก้ปัญหาที่เป็นไปได้ (รวมถึงโซลูชั่นนี้) ที่นี่: http://www.sitepoint.com/unblock-port-80-on-windows-run-apache/

โดยทั่วไป:

เปิดบริการจากเครื่องมือการดูแลระบบและค้นหา“ บริการตัวแทนการปรับใช้เว็บ” หยุดบริการและตั้งค่าประเภทการเริ่มต้นเป็น "ด้วยตนเอง"

บริการตัวแทนการปรับใช้เว็บถูกปรับใช้กับ WebMatrix และเป็นสาเหตุของความทุกข์ของฉัน มันอาจถูกแจกจ่ายกับแอปพลิเคชันอื่น ๆ ที่ติดตั้งโดยใช้ Web Platform Installer


นอกจากนี้ปัญหาที่ฉันมี (ใน Windows 10)
toby1kenobi

5

PID 4 นั้นยากที่จะเข้ารหัสเป็นกระบวนการ "ระบบ" ซึ่งเป็นส่วนหนึ่งของเคอร์เนลระบบ

หากพอร์ตถูกครอบครองโดยระบบคุณอาจเปิดใช้งาน IIS ดูhttps://stackoverflow.com/questions/1430141/port-80-is-being-used-by-system-pid-4-what-is-that


ฉันถอนการติดตั้ง IIS 7.5 Express ที่คิดว่าจะช่วยได้ บางทีฉันต้องรีสตาร์ท? ฉันจะลองดู
apokaliptis

Nope ปัญหายังคงมีอยู่
apokaliptis

คุณติดตั้ง IIS 7.0 (ที่มาพร้อมกับ Windows 7) หรือไม่ โดยปกติถ้าคุณหยุด w3svc พอร์ตจะถูกปิด
billc.cn

Nope และเท่าที่ฉันรู้ฉันไม่ควรติดตั้งเว็บเซิร์ฟเวอร์อื่นใด
apokaliptis

คุณสามารถเรียกใช้ netstat อีกครั้ง แต่โพสต์พอร์ตที่รับฟังได้เท่านั้น
billc.cn

1

ในขณะที่ใช้คำสั่งnetsh http add iplisten ipaddress=::ทำแน่นอนอนุญาตให้ Apache เริ่มทำงานบนระบบ Windows 10 64 บิตของฉันมันคร่าชีวิตผู้คนด้วยความพยายามที่จะเข้าถึง localhost ตามที่ถูกผูกไว้กับ::แทนที่จะเป็น127.0.0.1แม้จะมีรายการที่เหมาะสมในไฟล์โฮสต์ของฉัน สิ่งที่ฉันทำคือการใช้คำสั่งนี้แทน: netsh http add iplisten ipaddress=0.0.0.0 สิ่งนี้ไม่เพียงทำงานได้ แต่อนุญาตให้เบราว์เซอร์เข้าถึง localhost ได้เช่นกัน สำหรับฉันนี่เป็นทางออกที่เหนือกว่า


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.