发现问题

今天准备测试一些PHP脚本,于是打开了久违的XMAPP环境
但是XMAPP环境并没有像以往的那样正常地启动起来,而是在日志区域显示了这样的一段提示:

XMAPP环境无法启动

XMAPP环境无法启动,红色提示说80口被PID为4的进程占用。

然后我看了下Netstat的记录,确实是被PID为4的进程占用了:
从NETSTAT里面查找占用端口的进程

说明一下netstat的指令:
我使用的指令是netstat -ano,其中:
-a是显示所有连接和监听端口;
-n是以数字IP地址的方式显示地址和端口号,如果不写这一项会看到“外部地址”一列有的会显示为域名或主机名;
-o是显示连接对应进程的ID
所以,要查明对应关系,必须至少输入“netstat -ao”。
当然,如果你发现列表太长找不到你要找的80口数据,你可以附加一个处理字符串的“|findstr 80”就可以精确定位出几条80口的连接记录了。

解决方法

遇到这种情况,首先要确定占用进程是哪个。
我们用到的是每个电脑都有的软件——“Windows任务管理器”。

什么?你不知道怎么打开“任务管理器”?
……同时按住Ctrl+Alt+Delete,就能看到“启动任务管理器”的选项(Win 7)或者直接打开了“任务管理器”(Windows XP)。
……或者在任务栏上面打开右键菜单也能找到“启动任务管理器”选项。

将“任务管理器”切换到“进程”面板,查找一下PID为4的进程。一般显示的都是System。这是一个系统进程,使用右下角的“结束进程”没有办法关闭这个进程。

在任务管理器中找到PID为4的进程

如果你的“Windows任务管理器”里面看不到“PID”一列,你可以将其显示出来。方法如下:

  • 打开“查看”菜单,点击“选择列...”菜单项。
    “查看”菜单中的“选择列...”菜单项
  • 在打开的新窗口中勾选“PID”一行,点击“确定”即可。
    “选择进程页列”窗口

遇到这种情况就只能重启么?不,不一定!

可以去看下你最近安装的服务,将他们关闭一下试试看!

比如说:
我前段时间为了测试IIS下面的伪静态路由,在这部Windows 7下面安装了IIS套件。而这个套件的万维网服务(W3SVC)也是隐藏在System进程中占用80口的罪魁祸首。

在Win XP中IIS相关的服务都是使用独立的inetinfo.exe进程,比较容易看出是IIS在占用,
而到了我使用的Win 7的时候,IIS服务的启动指令已经变成了

`C:\\Windows\\system32\\svchost.exe -k iissvcs`

这个“Windows服务主进程”的模式来运行,这个时候看到的监听端口的进程很有可能被显示成System。

这时候,只要关闭对应的服务就能释放出被监听的80端口了。
从服务列表中关闭W3SVC服务项目

打开“服务”管理页的方法:

  • “计算机”(或者“我的电脑”)右键菜单选择“管理”打开的窗口中展开左侧树的“服务和应用程序”节点,找到“服务”一项。
  • “控制面板”里面找到“系统和安全”(如果显示的是分类界面)里的“管理工具”,双击“服务”快捷方式打开。
  • 打开“开始”菜单,选择“运行...”,然后输入“services.msc”即可打开。

当然,并不是所有人都像我这样被IIS这样“愚蠢”的占用问题折腾地到处搜索答案。除了IIS以外,我搜索到的情况中有人是被SQL Server 2008中的报表服务所占用的。
所以,别因为多次重启后80口还是被占用而准备重装系统,很有可能是一些你前些时间安装的服务搞的鬼。

标签: none

添加新评论