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

apokaliptis
источник
Не мешало бы подключить «GET / HTTP / 1.1» к 127.0.0.1 и посмотреть, что произойдет.
LawrenceC
@ultrasawblade Как именно я это делаю?
Апокалиптис
1
Запустите, telnet 127.0.0.1 80затем пройдите эту строку и дважды нажмите клавишу ввода. Если вы работаете в Windows 7, вам сначала нужно установить клиент telnet из раздела «Добавить и удалить компоненты Windows».
billc.cn
1
Сервис World Wide Web Publishing в Windows 8 64 для меня сделал свое дело.
1
Состояние службы HTTP может помочь вам идентифицировать работающие службы в случае PID 4. Запустите netsh http show servicestateи просмотрите зарегистрированные URL-адреса или информацию журнала .
пазадев

Ответы:

77

Хорошо, после поиска в сети некоторое время я нашел решение своей проблемы.

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

  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.

    • Зайдите в диспетчер устройств, выберите «показать скрытые устройства» в меню / представлении, перейдите к «Драйвер без Plug and Play» / HTTP, дважды щелкните по нему, чтобы отключить его (или установите его вручную, некоторые службы зависят от него).

    • Перезагрузитесь и используйте, netstat -nao | find ":80"чтобы проверить, используется ли еще 80.

    2.

    • Запустите RegEdit.

    • Перейти к HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP

    • Измените значение «start» на 4, что означает отключение.

    • Перезагрузите компьютер.

Моим решением был шаг 4 .

apokaliptis
источник
4
Где находится дерево «Драйвер без Plug and Play» в диспетчере устройств 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, диспетчер очереди печати, HomeGroup и обнаружение функций).
Крив
1
Я не понимаю эту команду на всех 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/

neojp
источник
Это отличное решение, когда вам нужно запустить сервер, который не использует http.sys, и сервер, который его использует.
Тор Якобсен
Также работал для меня. Что это на самом деле, хотя?
Акаме
1
Я думал, что это решило мою проблему, потому что это освободило порт, но у него также были некоторые другие побочные эффекты. В частности, я не смог привязать к определенным именам хостов через IIS после этого изменения. Для отмены я использовалnetsh http delete iplisten ipaddress=::
cchamberlain
Это сработало для меня, но имело побочные эффекты. Пожалуйста, смотрите мой ответ ниже для возможной альтернативы, которая использует ту же команду, но другой IP-адрес.
Дейв Мортон,
6

В моем случае это был WebMatrix. Смотрите возможные решения (включая это) здесь: http://www.sitepoint.com/unblock-port-80-on-windows-run-apache/

В основном:

Откройте Службы из средств администрирования и найдите «Служба агента веб-развертывания». Остановите службу и установите тип запуска «Ручной».

Служба агента веб-развертывания развернута вместе с WebMatrix и стала причиной моих проблем. Он также может распространяться с другими приложениями, установленными с помощью установщика веб-платформы Microsoft.

Мартин Колл
источник
Также проблема у меня была (на Windows 10)
toby1kenobi
5

PID 4 жестко запрограммирован как «системный» процесс, являющийся частью ядра системы.

Если порт занят системой, возможно, IIS включен. См. Https://stackoverflow.com/questions/1430141/port-80-is-being-used-by-system-pid-4-what-is-that

billc.cn
источник
Я удалил IIS 7.5 Express, думая, что это поможет. Может быть, я должен перезагрузить? Я собираюсь попробовать это.
Апокалиптис
Нет. Проблема все еще сохраняется.
Апокалиптис
У вас также установлен IIS 7.0 (тот, который поставляется с Windows 7)? Обычно, если вы просто остановите w3svc, порт будет закрыт.
billc.cn
Нет. И, насколько я знаю, у меня не должно быть никаких других установленных веб-серверов.
Апокалиптис
Не могли бы вы снова запустить netstat, а только опубликовать порты, которые СЛУШАЮТ?
billc.cn
1

Хотя использование этой команды netsh http add iplisten ipaddress=::действительно позволило запускать Apache в моей 64-битной системе Windows 10, она привела к хаосу при попытке получить доступ к localhost, поскольку это было связано ::вместо того 127.0.0.1, даже при правильной записи в моем файле hosts. В итоге я воспользовался этой командой: она netsh http add iplisten ipaddress=0.0.0.0 не только работала, но и позволяла браузеру получать доступ к localhost. Для меня это было превосходное решение.

Дейв Мортон
источник
0

Откройте список служб. Найдите «Службу публикации в Интернете». Остановите ее и установите «Вручную».

Аарон
источник