XAMPP - 端口80被“无法打开进程”PID 4占用!

219

我已经尝试删除Skype,但没有成功,我也尝试关闭全球网络和IIS,但似乎都不起作用。

12:51:22 PM  [Apache]   Problem detected!
12:51:22 PM  [Apache]   Port 80 in use by "Unable to open process" with PID 4!
12:51:22 PM  [Apache]   Apache WILL NOT start without the configured ports free!
12:51:22 PM  [Apache]   You need to uninstall/disable/reconfigure the blocking application
12:51:22 PM  [Apache]   or reconfigure Apache and the Control Panel to listen on a different port

2
不,我是想在这里输入的,毕竟并非所有人都对电脑了如指掌。我是在寻求帮助,我已经谷歌过了,但是所有人提供的解决方法都无效。 - user3097839
啊,现在有意思了。尝试使用 http://www.petri.co.il/quickly_find_local_open_ports.htm 查找谁阻止了端口80的访问。 - Pekka
9
@Pekka 自从我停止穿尿布后不久就开始使用计算机,我已经成为一名程序员将近十年了。我通过谷歌搜索找到了这个问题的答案,感谢这个网站让问题提出者和回答者都能使用。虽然这个问题可能应该迁移到超级用户,但是嘲讽人们并让他们感到因为问一个合理的问题而感到愚蠢,与社区运作的方式相悖。我建议你找到其他生活目标。 - user562566
3
我不确定这个搜索结果是在你的搜索中产生的,但在我的搜索中,由于这个帖子,它排名第一。这正是这个社区努力成为的,一个高度可见和知名的知识库,专门用于这种东西。所以虽然我欣赏你的说法,但实际上,感谢原帖作者的使命已经完成了。 - user562566
@TechnikEmpire 但事实上,这个问题现在成为了Google搜索结果中排名较高的一部分,这是问题的一部分,而不是解决方案。在这个问题出现之前,Google的搜索结果已经包含了很好的答案 - 在发表评论之前,我进行了检查,我总是这样做的。由于SO在Google上的巨大影响力,这些答案现在可能已经被这个问题挤到了下面。请参见这里的讨论:http://meta.stackexchange.com/questions/160565/general-reference-questions-create-low-quality-dead-ends-for-googlers - Pekka
在管理员权限下,尝试从命令提示符中运行 net STOP http 命令可以正常工作。 - KingRider
29个回答

426
  1. 以管理员身份打开命令提示符,执行以下命令:

  2. net stop was /y
    
  3. 打开运行对话框(按下 Win+R),然后输入:services.msc

    接着搜索 World Wide Web Publishing Service (WWW-Publishing Service)和 Web Deployment Agent Service 并停止它们。你还应该禁用它们。

  4. 再次使用 XAMPP 启动 Apache :)

链接参考:https://www.sitepoint.com/unblock-port-80-on-windows-run-apache/


17
我找不到万维网。 - Mohammad Kermani
4
获取服务的另一种方法 - 前往“控制面板 > 系统和安全 > 管理工具 > 服务”。 - Al.G.
29
"SQL Server Reporting Service(MSSQLSERVER)" 也使用端口80,因此如果您的计算机上安装了MS-SQL服务器,则应停止它。 - johnkarka
2
有什么想法为什么会发生这种情况吗?是Windows出了问题,还是有人入侵了我的机器? - Stan Quinn
7
我关闭了“万维网发布服务”,问题得到了解决!谢谢。 - Mike Stratton
显示剩余5条评论

156
另一个非常简单的选项是将Apache设置为侦听不同的端口。 这可以通过在与“Apache”模块相同行的“Config”按钮上单击,从下拉列表中选择“httpd.conf”文件,然后更改“Listen 80”行为“Listen 8080”来完成。保存文件并关闭。
现在它避免使用端口80,并且无问题地使用端口8080。 唯一需要做的额外事情是确保在浏览器中输入localhost:8080,以便浏览器知道要在端口8080上查找。否则它会默认使用端口80,并且无法找到您的本地站点。
这还需要您重新启动Apache才能使更改生效。
大功告成!问题已经解决。

我被强制升级到Windows 10,导致我的XAMP安装出了问题,这个答案帮助我解决了问题。谢谢! - Ian
这对我也起作用了,除了我退出了所有东西,点击了 C:/xampp 中的 xampp_start,然后将其更改为端口81。8080对我不起作用。 - user3553260
2
我推荐你的解决方案。在我的情况下,我需要开发ASP .NET应用程序和PHP。如果我停止“World Wide Web Publishing Service”服务,我就无法使用ASP应用程序。所以改变端口对我来说是一个解决方案。谢谢! - mihkov
4
除了修改 httpd.conf 文件外,您可能还需要在“配置”>“服务和端口设置”中更改端口。在“Apache”选项卡中,将“主端口”值更改为新端口即可。 - Ian A

52

在httpd.conf中更改以下行,然后重新启动应用程序:

  • Listen 80 更改为 Listen 8080
  • ServerName localhost:80 更改为 ServerName localhost:8080

当您点击“开始”时,应用程序仍然可能显示类似“端口80被“无法打开进程”的PID使用”的错误,但它仍然可以正常工作。

如果错误包括“端口443被“无法打开进程”的PID使用”,则需要同时更改httpd.conf和httpd-ssl.conf文件。

在httpd-ssl.conf中更改:

  • Listen 443 更改为 Listen 4433
  • <VirtualHost _default_:443> 更改为 <VirtualHost _default_:4433>
  • ServerName www.example.com:443 更改为 ServerName www.example.com:4433

我最终不得不在我的问题上这样做。天哪!那个PID是由系统生成的。 - mzimhle
确实。在我更改端口后,关闭XAMPP并重新打开它仍然显示红色错误消息,但是一切都正常工作。显然,XAMPP在显示该错误消息之前不会检查端口是否已被重新配置。它只检查端口是否正在使用。 - Vanity Slug

43

这篇文章中提取:

  1. 进入运行命令并输入:

    netstat -o -n -a | findstr 0.0:80

这里的最后一个数字是使用其的进程ID。通常情况下,这是IIS或其他网络相关服务,容易解决,但偶尔(在谷歌上看起来很频繁)它似乎是PID 4——根据Windows任务管理器是NT内核和系统。鉴于杀死它会导致蓝屏死机,这并不是很有帮助。

占用端口80的东西与IIS或任何网络相关内容无关,而是SQL Server Reporting Services。关闭任何类似于SQL Server Services的内容,然后重新启动Apache,无需重新启动计算机即可完成。

因此,对于监听端口80的PID 4出现问题?检查您的SQL服务并将其关闭。

更新 - @sangam的评论:

一次成功。在我的情况下,它原来是SQL服务器报告服务。我停止了所有已安装实例的服务,然后它就可以工作了(无需重启计算机)。


7
工作很顺利。对我来说,它是SQL Server报告服务。我停止了所有已安装实例的服务,它奏效了(无需重新启动机器)。谢谢。 - sangam
1
非常有帮助。在此之前,我更改了 Skype 端口。关闭 SQL 服务对我很有帮助。非常感谢。 - Waqar
2
最后,在我的情况下,也是MSSQL。 - Tomas Ramirez Sarduy
1
停止 SQL Server Reporting Services (MSSQLSERVER) 对我有用。 - Disturb
1
谢谢,这是我需要的答案。 - balron

38

我曾面临Apache服务启动时的问题,现在我想与你分享我的解决方案。以下是一些关于可能使用端口80的服务或程序的注意事项:

  1. Skype: Skype默认使用端口80/443。您可以在工具 -> 选项 -> 高级 -> 连接中更改此设置,并禁用"用于其他传入连接的端口80和443"复选框。

  2. IIS: IIS默认使用端口80,所以您需要关闭它。您可以使用以下两个命令:net stop w3svcnet stop iisadmin

  3. SQL Server Reporting Service:如果IIS未运行,则需要停止此服务,因为它可能占用端口80。进入本地服务并将其停止。

  4. VMware Workstation:如果您正在运行VMware Workstation,则还需要停止VMware Workstation服务器-端口443。

这些选项对我非常有效,我可以无错误地启动Apache服务。

另一种选择是从httpd.conf更改Apache侦听端口,并设置另一个端口号。

希望这个解决方案能帮助任何再次遇到相同问题的人。


4
我的是 SQL Server 报告服务。谢谢! - Jayanga Kaushalya
停止 w3svc 解决了我在 Windows 10 上的问题。非常好的答案。 - Nox
你如何判断哪些服务正在使用80端口?(Windows 10) - Chris Nielsen
对我来说这个方法是有效的:“IIS:IIS默认使用80端口,所以您需要关闭它。您可以使用以下两个命令:net stop w3svc、net stop iisadmin。” - Ravindra Singh

33

你可能需要停止 "Web Deployment Agent Service" 服务

按下Win+R,输入 services.msc

右键点击 Web Deployment Agent Service 并选择 "停止"

重新启动 XAMPP

同时,在双击 "Web Deployment Agent Service" 后,可以将启动类型更改为手动,这样 "Web Deployment Agent Service" 就不会自动启动。


1
禁用该服务会有任何问题吗? - Muhammad Muazzam

10

正如@johnkarka在问题中所说,此端口也被SQL Server Reporting服务使用。在停止该服务后,Apache就能正常启动了。

  1. 进入“SQL Server配置管理器”
  2. 点击“SQL Server Reporting服务”并停止它

输入图片描述

有趣的是,在相同的配置下,IIS工作得很好,但Apache却不行,必须停止SQL Reporting服务才能让它在默认端口(80)上运行。


9
更改主端口80到8080后,您需要在控制面板中更新端口: 进入图片描述 然后点击这里: 进入图片描述 以及这里: 进入图片描述 最后保存并重启。

7
  1. 打开任务管理器 (Ctrl+Alt+Delete)。
  2. 进入 "详细信息" 选项卡。
  3. 按 PID 编号排序。
  4. 结束使用错误中指示的 PID 编号的进程。
  5. 重新启动 XAMPP。

2
在我的情况下,正在使用PID4的是系统。因此这可能很危险。 - Fusion
对我有用,因为该端口被我的另一个服务器使用。请考虑@Fusion的评论。 - Varshaan

4

我的解决方法是停止Internet Information Services (IIS)。如果你使用的是Windows 7系统,点击开始按钮,在搜索框中输入“iis”,然后点击“Internet Information Services(IIS)管理器”。当窗口弹出时,假设你没有选中任何图标,你应该只需在右侧操作面板上点击“停止”即可。我的XAMPP Apache就成功启动了。希望这个方法能对你有所帮助。


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