Apache服务器(xampp)在Windows 10上无法运行(端口80)

86

我已经安装了Windows 10内测版,除了Apache之外,一切正常。当我尝试启动它时,它会提示端口80被阻止了。是否有一种方法可以解除阻止或者让Apache使用其他端口?

我以前使用的是Windows 7,在skype中遇到了端口80的问题,但我已经将其禁用。


PID为4。进程为System(NT Kernel&System)。 - Aloso
小心你的电脑品牌:我发现我的电脑有一个定制服务正在阻止端口。我不得不逐个禁用所有服务,最终才找到了问题所在... - Jean-François Savard
可能是XAMPP:无法启动Apache(Windows 10)的重复问题。 - Burgi
更改IIS端口:https://dev59.com/VWIk5IYBdhLWcg3waNZr#56802079 - Suresh Kamrushi
18个回答

212

我在Windows 10上遇到了同样的问题,IIS/10.0正在使用端口80

解决方法:

  • 找到服务"W3SVC"
  • 禁用它或将其设置为"手动"

法语名称为:"Service de publication World Wide Web"

英文名称为:"World Wide Web Publishing Service"

德语名称为:"WWW-Publishingdienst" - 感谢@fiffy

波兰语名称为:"Usługa publikowania w sieci WWW" - 感谢@KrzysDan

俄语名称为:"Служба веб-публикаций" - 感谢@Kreozot

意大利语名称为:"Servizio Pubblicazione sul Web" - 感谢@Claudio-Venturini

西班牙语名称为:"Servicio de publicación World Wide Web" - 感谢@Daniel-Santarriaga

葡萄牙语(巴西)名称为:"Serviço de publicação da World Wide Web" - 感谢@thiago-born


其他选择:


编辑于2015年10月7日:有关详细信息,请参见Matthew Stumphy的答案Apache Server(xampp)无法在Windows 10上运行(端口80)


2
太棒了...这是Windows 10默认设置的问题。 - user3658423
3
在启动时,可以通过打开“管理工具”并选择“服务”来禁用服务。一个名为“服务”的窗口将弹出。然后找到“万维网发布服务”,右键单击并选择“属性”。将“启动类型”更改为“手动”,然后单击“应用”。 - zgr024
3
通过调用“sc getdisplayname W3SVC”,其他人可以找到显示名称。 - Honza Kuchař
W3SVC是否有任何理由在普通计算机上运行,而该计算机并未充当Web服务器的角色? - DaedalusAlpha
把“万维网发布服务”从已安装的Windows组件列表中删除,这样不就不需要禁用该服务了吗?因为它已经不存在于系统中。 - Arnoud Sietsema

31

本文旨在补充paaacman在此帖中的最高评分答案。我想为像我这样不太了解Windows 10的用户添加一些有用的细节。

Windows 10会在启动时自动运行IIS(Internet Information Services,微软的Web服务器软件),并使用端口80。要在该端口上使用Apache服务器,必须停止IIS。

paaacman的回答将IIS服务器称为“W3SVC”或“World Wide Web发布服务”。我想这是因为Windows 10将IIS作为服务运行。要禁用它或修改服务的运行方式,您需要知道在系统中找到“服务”的位置。

我发现最简单的方法是单击Windows 10任务栏开始菜单按钮旁边的搜索按钮,然后键入“管理工具”。您可以按回车键或单击Windows为您查找的“管理工具”链接。

控制面板窗口将打开,并显示一系列工具。您要找的是“服务”。双击它。

将打开另一个名为“服务”的窗口。找到名为“World Wide Web发布服务”的选项。如果您的列表不是英语,请参考此主题中的其他用户所列出的其他语言中称之为什么。

如果您仅想在此Windows会话中关闭IIS服务器,但是希望下次启动Windows时它能够自动运行,请右键单击“World Wide Web发布服务”并选择“停止”。服务器将停止,端口80将被释放以供Apache(或任何其他您想要使用的)。

如果您想要防止IIS服务器在将来开机自动运行,右键单击 "World Wide Web Publishing Service" 并选择 "属性"。 在弹出的窗口中,找到"启动类型"下拉菜单,并将其设置为“手动”。 点击 "应用" 或 "确定" 保存更改。 您的设定已完成。

16

在Windows 10中,默认情况下IIS运行在端口80上,但可以更改:

运行 appwiz.cpl ,使用 打开或关闭Windows功能 安装IIS管理控制台。

打开或关闭Windows功能 -> Internet信息服务 -> Web管理工具 -> IIS管理控制台

运行 InetMgr.exe 并进入 "连接 -> 网站",右键单击默认条目 "Default Website" 上下文菜单进行打开。在上下文菜单中选择 "绑定" 打开服务器地址和端口配置。

"Connections -> Sites" -> "Default Website Bindings"

服务器地址和端口配置

将默认端口更改为8080

https://technet.microsoft.com/library/hh831681.aspx#Site_Bingings


15

我曾经遇到过完全相同的问题并通过在管理员命令行运行以下命令来解决:

1) 首先使用以下命令停止服务

net stop http /y

2) 然后禁用启动(可选)

sc config http start= disabled


这是释放端口80的最简单方法。我在vagrant虚拟机中使用它。 - Mārtiņš Briedis

9

在命令行中输入:

netstat -aon | findstr :80

你会看到使用端口80的进程的PID。然后尝试配置这个应用程序使用另一个端口,或者直接杀死它。

更新: 为了更加清晰,我在这里写下我的评论:根据这篇文章,在Windows 10中,MsDepSvc服务占用了端口80。它是为IIS或Web Matrix 2设计的。如果你不需要使用IIS或Web Matrix 2进行任何Web开发,可以尝试关闭该服务。

至于你提出的第二个问题,你可以通过编辑[Apache文件夹]/conf/httpd.conf来告诉Apache使用另一个端口。它有一个"Listen 80"字符串。将80更改为任何你想要的空闲端口并重新加载Apache。


这是系统的问题。我不能杀掉它,对吗? - Aloso
经过快速的谷歌搜索,我找到了这个链接http://www.nextofwindows.com/why-port-80-is-being-used-by-system-process-id-4-whats-going-on-with-your-windows-machine/。 "...,你有一个名为MsDepSvc的服务在后台运行,占用了80端口。一个快速的解决方法是当你不计划使用IIS或Web Matrix 2进行任何网络开发时停止该服务。当需要时启动服务,希望这解决了你在使用Web Matrix和传统的apache开发之间可能遇到的一些问题。" - Sergey Maksimenko
抱歉,我没有这个进程。 - Aloso

8
您可能还需要终止SQL Server Reporting Services。

5
在我的情况下,我需要同时使用XAMPP进行Apache开发和IIS Express进行.Net 2013开发; 所以我按照以下步骤操作:
  1. 在命令提示符中键入services.msc,这将加载“Windows服务”,在其中找到“万维网发布服务”并停止它。 World Wide Web Publishing Service STOP

  2. 然后我启动XAMPP控制面板,点击“Config”,然后选择“Apache httpd.conf”。搜索“80”,然后在“Listen 80”和“ServerName localhost:80”中将其更改为“8080”。从“Save As”保存文件,并选择“All files”以不将其保存为文本从“Save As Type”,“Encoding”应为“UTF-8”。 Apache httpd.conf

  3. 退出XAMPP控制面板,然后再次启动它,并从“Action”启动Apache和MySQL。现在您将看到端口已更改。现在您必须使用“localhost:8080”而不是“localhost”来访问您的Apache服务器。现在您可以在同一台Windows 10 PC上运行Apache和IIS Express。

我在某个地方读到过一篇文章,作者建议使用端口“9080”,但对我没有用。

3

每当一个进程使用80端口时就会出现问题。

你可以运行XAMPP控制面板中提供的Netstat,检查系统中哪个进程在使用80端口。

对于我来说,不是IIS,而是Skype

关闭该进程/应用程序,然后启动Apache服务。


这似乎只是之前答案的重复,或许最好只作为一条评论,说明Skype是你的问题进程。 - blm
“这听起来像是一个答案!”对我来说是这样的!它可能不是解决了OP问题的答案,但对我来说确实解决了,我很感激它是一个答案而不是一个评论,否则我可能就看不到它了。 - arichards

2

我认为修改Apache服务器端口很简单:

  1. 进入C:\xampplite\apache\conf
  2. 打开httpd.conf文件
  3. 搜索Listen 80
  4. 80更改为其他数字,如9080
  5. 现在重新启动XAMPP并尝试启动服务器

NB 我正在使用Server version: 5.1.41 with windows 10


2

我知道这个问题可能已经解决了,但我遇到了相同的问题,并找到了另一种可能的解决方案。在我的情况下,端口80被Skype(pid:25252)占用,我不知道是什么程序。

要查看使用端口80的程序pid,您可以使用其他人之前提到的命令:

netstat -aon | findstr 0.0:80

使用进程ID结束程序(在你不知道程序名称的情况下),需要以管理员身份打开CMD并使用下面的命令:

taskkill /pid 25252

这个命令的其他选项可以在这里找到。


这不是同样的问题,因为您可以在 Skype 的设置中禁用端口 80。您不需要终止 Skype! - Aloso
你是对的。我现在看到了这个选项。当我遇到问题时,我没有看到它。 - CGG

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