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

9 則留言:

  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. 謝謝樓上幾位的分享。

      刪除