如何在本地主机上释放端口80(Windows)?

147

我安装了XAMPP 1.6.8,但它似乎无法正常工作。后来发现端口80没有空闲或未监听。我该如何释放或让其空闲?

非常感谢!


https://dev59.com/SHI95IYBdhLWcg3wyBCc#16251034 - amin k
https://dev59.com/q3RB5IYBdhLWcg3wAjNH - mateuszb
我认为这是一个重复的问题(请在此找到答案)->https://dev59.com/pHM_5IYBdhLWcg3wUxVB - Dung
重复还是不重复,这是在Google上的第一个搜索结果。 - Bitterblue
这回答了你的问题吗?[如何在Windows上找出哪个进程正在监听TCP或UDP端口?] (https://dev59.com/nXVD5IYBdhLWcg3wOo5h) - Stephen Ostermiller
18个回答

144

我发现占用80端口的是http api服务。我在命令提示符中输入:

net stop http

询问我:“以下服务将被停止,您要继续吗?”按下y键。

实际上它停止了一些服务。

然后输入localhost,Apache在80端口上启动并运行。

重要提示: Skype默认使用80端口,您可以在Skype选项 > 高级选项 > 连接中更改此设置,并取消勾选“使用80端口”。


在Windows 7上,我无法停止进程,因为出现了“访问被拒绝”的错误提示,但它向我显示了哪些进程的名称将被终止,如果我有权限的话(我没有netstat -a -b的权限)。 - Pavel V.
2
@PavelV,您应该以管理员权限运行命令提示符。打开开始菜单,在搜索框中输入“cmd”,右键单击cmd并选择“以管理员身份运行”。 - MoFarid
确保以管理员身份打开CMD,这样它会拥有足够的权限。 - Naser Nikzad

72

netstat -ano

这会显示监听端口80的进程的PID。之后,打开任务管理器 -> 进程选项卡。在“查看 -> 选择列”菜单中启用PID列,您将看到监听端口80的进程名称。


1
这很好,因为可能会有其他具有相同名称的进程。我想知道在Windows中是否有任何kill命令可以针对找到的PID运行,而不是通过任务管理器执行它。 - Sundeep
taskkill无法杀死任务。它仍然显示端口80正在运行。@Jijo - Aakash Thakur
1
你可以尝试在结尾处使用 /f /t,它会强制终止任务。我目前在 Linux 系统上,未经验证。 - Jijo

49

我之前也遇到过这个问题,

如果你查看任务管理器(启用PID视图后),你会发现PID=4是“NT内核和系统使用的80端口”;

只需执行以下步骤:

  1. 打开控制面板
  2. 选择程序
  3. 点击打开或关闭Windows功能
  4. 检查是否已选中IIS下的World wide web services

如果已经选中,则取消勾选并重新运行netstat(或TCPVIEW)以查看端口80是否空闲。


3
Win7:在“开始菜单”搜索“IIS”会出现“IIS管理器”,您可以在其中禁用服务器。 - Philipp
1
这对我有用。我试图在Windows上使用nginx,但它无法绑定,出现了“nginx:[emerg] bind()to 0.0.0.0:80 failed(10013:尝试访问被其访问权限禁止的套接字)”错误。网上提到了很多解决方法,但这是最直接的一个。对我来说确实需要重新启动。 - User

45

netstat -a -b

应该告诉您哪个程序绑定到了端口80。


1
它只是给了我字节,单播等等。并没有告诉我在端口80上绑定了什么。我有遗漏吗? - Aashish
1
我尝试了这个操作,但它提示“所请求的操作需要提升权限”。 - createscape
你是神!鞠躬,通过这个我能够找到与其他进程具有相同进程ID的实际服务名称,在任务管理器中之前无法确定要终止的实际服务。非常感谢! - divy3993
1
对我来说它显示为“无法获取所有权信息” - 现在怎么办? - winklerrr

37

使用提升的命令提示符输入netstat -bano,查看哪些应用程序正在监听哪些端口。

但通常在Windows中,以下应用程序使用端口80。

  1. IIS
  2. World Wide Web发布服务
  3. IIS管理服务
  4. SQL Server报告服务
  5. Web部署代理服务

如果运行,请停止上述应用程序并检查!


你知道怎么确保这些服务不使用80端口吗? - rahoolm
它怎么能工作,我已经停止了所有HTTP服务,但仍然被拒绝使用80端口。 现在在手动检查服务后它可以工作了。 非常感谢你,上帝保佑你。 - Bcktr

19

使用TcpView查找监听端口的进程并关闭该进程。


你可以在批处理文件中使用findstar,详见http://www.windowstechinfo.com/2015/05/how-to-check-whats-using-port-80-or-443-in-a-single-step-web-port-inspector.html。 - Aravinda

8
另一个可尝试的选项是停止SQL Server Reporting Services。

谢谢,对我来说是SQL Server Reporting Services(MSSQLSERVER),不知道为什么,但当我通过服务控制台终止它时,具有pid 4的进程从0.0.0.0:80解除绑定。 - Vladimir Shmidt

7
您可以使用net stop http命令,它会显示哪个进程在使用。大多数情况下是全球网络服务在使用。

7

在命令行中输入"netstat -ano"。我发现它显示了本地地址端口0.0.0.0:80的内容。

我的问题是因为SQL Server Reporting Services占用了80端口。所以我按照以下说明将端口号从80更改为81:

http://seankilleen.com/2012/11/how-to-stop-sql-server-reporting-services-from-using-port-80-on-your-server-field-notes/

这是我更改 SQL Server Reporting Services 端口号后命令行的截图:

enter image description here

如果您仍然遇到相同问题,请阅读此论坛:

http://forum.wampserver.com/read.php?2,66196,66233#REPLY


7

尝试

netstat -anb -p tcp

显示端口和进程的相关信息

我的xampp应用程序状态显示apache和mysql都是1,表示已启动并正在运行。但是浏览器仍然无法显示本地主机。为什么会这样?有什么指导意见吗?:( - Aashish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接