2013年8月14日 星期三

[Windows] Port 80被佔用導致Apache無法啟動

我們在Windows上使用AppServ架設網頁服務時,有時候會發現Port 80被佔用,導致無法啟動的狀況。

面對這樣子的窘境,可以參照以下步驟來執行:

  1. 開啟命令提示字元視窗,輸入以下指令:netstat –ano 找出佔用Port 80的程式PID
  2. 開啟「工作管理員」,到「處理程序」標籤,按上方的「檢視」→「選擇欄位」,把PID選項勾選起來。
  3. 看看是哪一個Service佔用了80 Port? 就處理處理一下吧。

一般而言,最常發生Skype佔用80 Port的狀況,若發生此狀況,請參考這邊的解決辦法

    倘若發現PID = 4,且來源是NT Kernel佔用的話,請別急著把它砍掉

    請下達以下指令:

  1. net stop http
  2. Sc config http start= disabled   
    (注意,這一行請完整複製,大小寫與空格都有差異)

完成後,最好重新開機一下,這樣子問題應該就解決了。

參考資源

  1. Getting Apache to run on port 80 on Windows 7
  2. [問題排除] 80PORT被佔用? 如何查出佔用PORT的方法
  3. Skype 佔用了 port 80

11 則留言:

  1. 請問下被NT Kernel佔用,您輸入那2行的用意是什麼
    謝謝

    回覆刪除
  2. 這代表先停用http服務,讓系統把跟http服務(不見得是來自apache) 占用的port釋放。第二行則是把自動啟動服務關閉。

    回覆刪除
  3. 請問一下,停用http.sys服務後,無法開啟列印多工緩衝處理(依存在http.sys服務)所以無法安裝列表機驅動程式,要如何重新開啟http.sys服務而不影響apache正常運作?謝謝你!

    回覆刪除
    回覆
    1. 再次 net stop http
      Sc config http start= delayed-auto
      重新開機

      刪除
  4. 謝謝Cash的回覆,
    當輸入net stop http時,因為http已經被停掉了,所以顯示
    尚未啟動HTTP Service服務,
    詳細資料,請輸入 NET HELPMSG 3521.

    當輸入Sc config http start= delayed-auto時,顯示:
    [SC] OpenService 無法 5:
    存取被拒絕.

    請問下一步要如何開啟http服務?

    回覆刪除
    回覆
    1. 我用這個方法解決了,要用管理員的方式開啟
      http://answers.microsoft.com/zh-hant/windows/forum/windows_7-security/%E6%83%B3%E9%96%8B%E5%95%9Fadministrator%E5%8F%AF/7bb3199d-14a5-4b22-aae6-959a1483a0ec?auth=1

      刪除
    2. 可以用這個方法
      到執行打開regedit,找到:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP
      在右邊找到start,將原來4改成0,重新開機就OK了!

      刪除
    3. 謝謝樓上幾位的分享。

      刪除
  5. 我的經驗win10
    net stop http 關了SSDP和print spooler
    但是沒用,因為這兩個根本沒占用80
    後來是關了IIS, 80port才被釋放

    回覆刪除
  6. WIN10之所以會佔用80 PORT是因為其 World wide web Publishing服務佔用掉80 PORT, 只要進”服務”把"World wide web Publishing服務" 停止並停用即可.

    回覆刪除