PID: 4 menggunakan Port 80

53

Saya mencoba untuk menginstal Zend Server CE di komputer saya tetapi ketika saya sampai pada titik itu saya harus memilih port untuk Server Web saya ia mengatakan: "Web Server Port: 80 Occupied". Jadi saya memutuskan untuk memeriksa apa yang menggunakan Port 80 dengan CMD dengan mengetik: "netstat -o -n -a | findstr 0.0: 80":

TCP     0.0.0.0:80     0.0.0.0:0     LISTENING     4

Saya memeriksa PID: 4 dalam Proses dan Layanan Task Manager. Sepertinya PID 4 adalah "Sistem".

Jadi, yang ingin saya ketahui adalah bagaimana saya bisa menghentikan "Sistem" (PID: 4) dari menggunakan Port 80?

INFO: Saya menggunakan: Windows 7 64bit; Zend Server CE 5.5.0

apokaliptis
sumber
Tidak ada salahnya untuk melakukan telnet "GET / HTTP / 1.1" ke 127.0.0.1 dan lihat apa yang muncul.
LawrenceC
@ultrasawblade Bagaimana tepatnya saya melakukan itu?
apokaliptis
1
Jalankan telnet 127.0.0.1 80lalu lewati baris itu dan tekan enter dua kali. Jika Anda menjalankan Windows 7, Anda harus menginstal klien telnet dari "tambah dan hapus fitur Windows" terlebih dahulu.
billc.cn
1
Layanan World Wide Web Publishing pada Windows 8 64 bagi saya berhasil.
2
Status layanan HTTP dapat membantu Anda mengidentifikasi layanan yang berjalan dalam kasus PID 4. Jalankan netsh http show servicestatedan lihat URL yang terdaftar atau informasi Logging .
pazadev

Jawaban:

78

Ok, setelah mencari di web sebentar saya menemukan solusi untuk masalah saya.

Cukup ikuti langkah-langkah ini untuk mendiagnosis dan menyelesaikan masalah Anda:

  1. Dapatkan pid yang mendengarkan port 80: netstat -nao | find ":80"

  2. Buka pengelola tugas, buka tab proses dan centang "PID" di Menu/View/Select Columns…, lalu cari proses menggunakan PID yang ditemukan di langkah terakhir.

  3. Jika itu adalah aplikasi normal atau IIS, nonaktifkan atau hapus instalannya. Beberapa program (seperti Skype) memiliki opsi untuk menonaktifkan penggunaan port 80.

  4. Jika ini adalah Proses Sistem — PID 4 — Anda harus menonaktifkan pengandar HTTP.sys yang dimulai berdasarkan permintaan oleh layanan lain, seperti Windows Remote Management atau Print Spooler pada Windows 7 atau 2008.

    Ada dua cara untuk menonaktifkannya tetapi yang pertama lebih aman:

    1.

    • Buka manajer perangkat, pilih "tampilkan perangkat tersembunyi" dari menu / tampilan, buka "Non-Plug and Play Driver" / HTTP, klik dua kali untuk menonaktifkannya (atau mengaturnya menjadi manual, beberapa layanan tergantung padanya).

    • Mulai ulang dan gunakan netstat -nao | find ":80"untuk memeriksa apakah 80 masih digunakan.

    2.

    • Luncurkan RegEdit.

    • Pergi ke HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP

    • Ubah nilai "mulai" menjadi 4, yang berarti dinonaktifkan.

    • Nyalakan kembali komputer Anda.

Solusi saya adalah langkah 4 .

apokaliptis
sumber
4
Di mana pohon "Non-Plug and Play Driver" di manajer perangkat Windows Server 2012?
Maria Ines Parnisari
4
Pendekatan manajer perangkat tidak tersedia dari Windows 8 dan seterusnya.
Roddy
1
Solusi registri berfungsi pada Win8. Saya rindu Linux.
AlikElzin-kilaka
5
Tolong atur sedikit ini. Menonaktifkan layanan "HTTP" di Windows menonaktifkan semua dependensinya. Layanan spesifik menggunakan port 80 adalah "W3SVC" (Layanan Penerbitan World Wide Web), ketergantungan "HTTP". Ini dapat diverifikasi dengan menjalankan "net stop W3SVC" dari Prompt Perintah Administratif, dan kemudian 'netstat -n -o -a | temukan ": 80" 'untuk memverifikasi tidak ada lagi yang terdaftar di port 80. Saya sarankan menonaktifkan World Wide Web Publishing Service (W3SVC) sebagai gantinya (jika Anda tidak ingin menonaktifkan SSDP, Print Spooler, HomeGroup, dan Function Discovery).
chriv
2
Saya tidak mengerti instruksi ini sama sekali. 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).Tidak ada Non-Plug and Play Driver”/HTTPitem menu di mana pun.
Martin Erlic
25

Saya baru saja mengalami masalah ini setelah menginstal Windows 8 Pro - Build 9200. Saya mencoba beberapa metode tetapi tidak dapat membuatnya bekerja. Yang ini, bagaimanapun, memperbaikinya.

Anda perlu mengubah alamat IP yang diikat untuk 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
sumber
Solusi ini sangat bagus, ketika Anda perlu menjalankan server yang tidak menggunakan http.sys, dan yang tidak.
Thor Jacobsen
Juga bekerja untuk saya. Apa yang sebenarnya ia lakukan?
akame
1
Saya pikir ini memperbaiki masalah saya karena tidak membebaskan port tetapi juga memiliki beberapa efek samping lainnya. Secara khusus, saya tidak dapat mengikat ke nama host tertentu melalui IIS setelah perubahan ini. Untuk membatalkan saya menggunakannetsh http delete iplisten ipaddress=::
cchamberlain
Ini bekerja untuk saya, tetapi memiliki efek samping. Silakan lihat jawaban saya di bawah ini untuk alternatif yang mungkin menggunakan perintah yang sama, tetapi alamat IP yang berbeda.
Dave Morton
6

Dalam kasus saya itu adalah WebMatrix. Lihat solusi yang mungkin (termasuk yang ini) di sini: http://www.sitepoint.com/unblock-port-80-on-windows-run-apache/

Pada dasarnya:

Buka Layanan dari Alat Administratif dan cari "Layanan Agen Penyebaran Web". Hentikan layanan dan setel jenis startupnya menjadi "Manual".

Layanan Agen Penyebaran Web digunakan dengan WebMatrix dan merupakan penyebab kesengsaraan saya. Itu juga dapat didistribusikan dengan aplikasi lain yang diinstal menggunakan Pemasang Platform Web Microsoft.

Martín Coll
sumber
Juga masalah yang saya alami (pada Windows 10)
toby1kenobi
5

PID 4 sulit dikodekan untuk menjadi proses "Sistem" yang merupakan bagian dari kernel sistem.

Jika port ditempati oleh sistem, Anda mungkin telah mengaktifkan IIS. Lihat https://stackoverflow.com/questions/1430141/port-80-is-being-used-by-system-pid-4-what-is-that

billc.cn
sumber
Saya telah menghapus instalan IIS 7.5 Express yang akan membantu. Mungkin saya harus memulai ulang? Saya akan mencobanya.
apokaliptis
Nggak. Masalah masih ada.
apokaliptis
Apakah Anda sudah menginstal IIS 7.0 (yang dikirimkan bersama dengan Windows 7)? Biasanya jika Anda hanya menghentikan w3svc, port akan ditutup.
billc.cn
Nggak. Dan sejauh yang saya tahu, saya seharusnya tidak menginstal server web lain juga.
apokaliptis
Bisakah Anda menjalankan netstat lagi tetapi hanya memposting port yang MENDENGARKAN?
billc.cn
1

Ketika menggunakan perintah netsh http add iplisten ipaddress=::, memang, memungkinkan Apache untuk memulai pada sistem Windows 10 64 bit saya, itu mendatangkan malapetaka dengan mencoba mengakses localhost, karena itu pasti ::bukan 127.0.0.1, bahkan dengan entri yang tepat dalam file host saya. Apa yang akhirnya saya lakukan adalah menggunakan perintah ini: netsh http add iplisten ipaddress=0.0.0.0 Ini tidak hanya bekerja, tetapi juga memungkinkan akses browser ke localhost. Bagi saya ini adalah solusi yang unggul.

Dave Morton
sumber
0

Buka daftar Layanan Cari "World Wide Web Publishing Service" Hentikan, dan setel ke Manual

Harun
sumber