在Windows下测试Apache遇到的80端口占用问题

虽然我这个blog(www.awflasher.com/blog/)跑在Linux服务器上,但许多调试工作还是只能用WAMP体系,即,Windows+Apache+MySQL+PHP,许多人对这个体系很是鄙视,其实我认为,如非必须使用Windows,谁也没有必要这样来用Apache,因此,苹果粉丝和命令行专家可以绕过此文了:)

下面,我来谈一谈我在配置WAMP时频繁遇到的一个问题:80端口占用。(非IIS占用)

两年多以前,我曾经发现Skype有这个坏毛病(由于用Skype不多,现在我也不知道Skype的目的在何,欢迎赐教)。几个月前,又发现PPLive也有这个毛病,只不过那次根据处理Skype问题的经验,我很快就解决了。今天,又再次遇到这个问题时,我困惑了:既没有PPLive,也没有Skype,80还是被占用了。用netstat看端口的pid,也发现很奇怪:有时候不显示80,有时候又显示为0,这是系统限制资源,显然不是我要找的“元凶”。

Google了“pid 0 80 port”,看到了答案

Try typing ‘netstat -ao’ (with an ‘a’) at CMD and that will give you a list of everything running on each port.

我一眼就看到了那个“罪魁祸首”:

C:Usersawflasher>netstat -ao
Local Address Foreign Address        State           PID   TCP
TCP 0.0.0.0:21             Pacers:0               LISTENING       511
TCP 0.0.0.0:80             Pacers:0               LISTENING       6421

用tasklist的FILTER,我们可以很快找到这个进程:

C:Usersawflasher>tasklist /FI "PID eq 6421"
Image Name                     PID Session Name        Session#    Mem Usage 
========================= ======== ================ =========== ============ 
MxDownloadServer.exe          6421 Console                    1      7,980 K 

原来是我电脑中“遨游浏览器”的进程。我使用遨游只是为了调试页面代码,这里我不做评价,浏览器这种敏感的话题,人各有志,各取所好。

PS:看了看netstat的帮助,分别如此描述-a和-o,也就明白了:

-a            Displays all connections and listening ports.

-o            Displays the owning process ID associated with each connection.

在本地用WAMP调试WordPress的blogger如果遇到类似的情况(症状主要是Apache无法启动),则可以用netstat -ao和tasklist来查出80端口到底被谁抢占了。

附,我所知道的Windows上一些默认占用80端口的非Web服务器类软件清单,欢迎补充:

  • Skype
  • Web迅雷
  • PPLive(可能是pp.tv,我懒得管了)
  • 傲游浏览器自动更新
  • 迅雷默认的BT上传端口(网友补充)
  • fs2you网盘(网友补充)
  • Cisco IP Communicator(网友补充)
  • QQMusic(网友补充)
Advertisements

44 thoughts on “在Windows下测试Apache遇到的80端口占用问题

  1. 迅雷的默认BT上传端口也是80,大概是为了突破配置不佳的防火墙。

    在Windows下Sysinternals的tcpview会比netstat更好用,个人觉得。

    1. 这几个兄弟装一起肯定是看开启顺序了:)
      另,感谢推荐这个工具。我用的是Process And Port Analyzer 2.0,但并没有在文章中推荐,因为一个netstat和tasklist足够了:)

  2. 迅雷5也会占用80端口,很让人郁闷的!
    傲游下载模块是由迅雷提供的,把这很不好的习惯也继承过来了。。。
    发现自己越来越讨厌傲游这种IE SHELL!

  3. Fs2you网盘的下载工具也会占用80端口,是一个叫peer.exe的进程,而且没有任何提示,好像是只要使用过,即使以后不启动软件这个进程也会存在

  4. 试试这段批处理

    直接运行的话要把双百分号换成单的

    for /f “tokens=2,5 delims= ” %%a in (‘netstat -aon’) do if %%a==0.0.0.0:80 tasklist /fi “pid eq %%b”

    1. 正解

      我发现果然是迅雷的问题

      不过让我昏倒的是
      迅雷5 -> 工具 -> 配置 -> BT/端口配置
      TCP端口赫然显示 [ 80 ]
      难道这个是安装的默认值么?

    1. 我也是啊,我用aw.com,不过端口还是80好吧……要不URL太难看了(或者可以改浏览器的默认端口。。。不清楚了)

  5. 你是否想过在网页上,那各种各样创意的广告而感动嫉妒,有没有想过,如果那些是你做的,那多有成就感,请加入我的QQ群:59343923
    来体验一下吧!~不要错过哦!~

  6. 呵呵,我找到了,好像是被迅雷搞的,唉,不过我配置apache和perl的时候,一直调用不到perl啊

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s