PID: 4, використовуючи порт 80


53

Я намагався встановити Zend Server CE на свій комп’ютер, але коли я дійшов до того, що мені потрібно було вибрати порт для свого веб-сервера, він говорить: "Порт веб-сервера: 80 зайнято". Тому я вирішив перевірити, що використовує порт 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 64bit; Zend Server CE 5.5.0


Не завадило б telnet "GET / HTTP / 1.1" до 127.0.0.1 і подивитися, що з'являється.
LawrenceC

@ultrasawblade Як саме це зробити?
апокаліптис

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. Запустіть netsh http show servicestateі подивіться зареєстровані URL-адреси чи інформацію журналу .
пазадев

Відповіді:


78

Ок, після деякого пошуку в Інтернеті я знайшов рішення своєї проблеми.

Просто виконайте такі дії, щоб діагностувати та вирішити свою проблему:

  1. Отримайте Pid, ​​який слухає порт 80: netstat -nao | find ":80"

  2. Відкрийте диспетчер завдань, перейдіть на вкладку "Процеси" і перевірте "PID" Menu/View/Select Columns…, а потім знайдіть процес, використовуючи PID, знайдений на останньому кроці.

  3. Якщо це звичайна програма або IIS, відключіть її або видаліть. Деякі програми (наприклад, Skype) мають можливість вимкнути його використання порта 80.

  4. Якщо це системний процес —PID 4 - вам потрібно відключити драйвер HTTP.sys, який запускається на вимогу іншою службою, наприклад, віддаленим керуванням Windows або спонсором друку в Windows 7 або 2008.

    Є два способи відключити, але перший безпечніший:

    1.

    • Перейдіть до диспетчера пристроїв, виберіть "Показати приховані пристрої" у меню / перегляді, перейдіть до "Не підключайте та відтворюйте драйвер" / HTTP, двічі клацніть його, щоб відключити його (або встановіть його вручну; деякі послуги залежали від нього).

    • Перезавантажте та використовуйте, netstat -nao | find ":80"щоб перевірити, чи 80 все ще використовується.

    2.

    • Запустіть RegEdit.

    • Йти до HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP

    • Змініть значення "пуск" на 4, що означає вимкнено.

    • Перезавантажте комп'ютер.

Моє рішення було кроком 4 .


4
Де стоїть дерево "Драйвер без підключення та відтворення" в менеджері пристроїв Windows Server 2012?
Марія Інес Парнісарі

4
Підхід диспетчера пристроїв недоступний з Windows 8 і далі.
Родді

1
Рішення реєстру працювало на Win8. Я сумую за Linux.
АлікЕльзін-кілака

5
Будь ласка, трохи підправте це. Якщо вимкнути послугу "HTTP" в Windows, вимкніть усі її залежності. Конкретним сервісом, що використовує порт 80, є "W3SVC" (Всесвітня послуга веб-видавництва), залежність від "HTTP". Це можна перевірити, запустивши "net stop W3SVC" з адміністративного командного рядка, а потім "netstat -n -o -a | знайти ": 80" ', щоб перевірити, що нічого більше не вказано на порту 80. Я рекомендую замість цього вимкнути Службу публікації веб-сторінок (W3SVC) (якщо ви не хочете вимкнути SSDP, спікер друку, домашню групу та відкриття функцій).
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пункту меню.
Мартін Ерлік

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, і той, який це робить.
Тор Якобсен

Також працював на мене. Що він насправді робить?
akame

1
Я думав, що це вирішило мою проблему, оскільки він звільнив порт, але він також мав деякі інші побічні ефекти. Зокрема, мені не вдалося прив’язати до конкретних імен хостів через IIS після цієї зміни. Для скасування я використавnetsh http delete iplisten ipaddress=::
cchamberlain

Це працювало для мене, але мало побічні ефекти. Перегляньте мою відповідь нижче щодо можливої ​​альтернативи, яка використовує ту саму команду, але іншу IP-адресу.
Дейв Мортон

6

У моєму випадку це був WebMatrix. Дивіться можливі рішення (включаючи це) тут: http://www.sitepoint.com/unblock-port-80-on-windows-run-apache/

В основному:

Відкрийте Служби з адміністративних інструментів та знайдіть "Служба агента веб-розгортання". Припиніть послугу та встановіть тип запуску на "Ручний".

Служба агента веб-розгортання розгорнута за допомогою WebMatrix і стала причиною моїх неприємностей. Він також може розповсюджуватися з іншими програмами, встановленими за допомогою веб-платформи Microsoft Microsoft 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 express, що допоможе. Можливо, мені доведеться перезапустити? Я спробую це.
апокаліптис

Ні. Проблема все ще зберігається.
апокаліптис

У вас також встановлений IIS 7.0 (той, що постачається з Windows 7)? Зазвичай якщо ви просто зупините w3svc, порт буде закритий.
billc.cn

Ні. Наскільки я знаю, у мене також не було встановлених інших веб-серверів.
апокаліптис

Чи можете ви знову запустити 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. Для мене це було чудовим рішенням.


0

Відкрийте список служб. Знайдіть "Служба видавничих послуг у світі". Зупиніть його та встановіть його на Посібник

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.