XAMPP,Apache-错误:Apache意外关闭


345

我刚刚重新安装了XAMPP,当我尝试在XAMPP控制面板中启动我的Apache服务器时,现在出现以下错误:

16:50:25  [Apache]     Status change detected: running
16:50:26  [Apache]     Status change detected: stopped
16:50:26  [Apache]     Error: Apache shutdown unexpectedly.
16:50:26  [Apache]     This may be due to a blocked port, missing dependencies,
16:50:26  [Apache]     improper privileges, a crash, or a shutdown by another method.
16:50:26  [Apache]     Press the Logs button to view error logs and check
16:50:26  [Apache]     the Windows Event Viewer for more clues
16:50:26  [Apache]     If you need more help, copy and post this
16:50:26  [Apache]     entire log window on the forums

我该如何解决?


安装新版本的XAMPP之后,我开始遇到此问题。我认为问题出在港口,因为几乎每个帖子都在谈论港口,但事实并非如此。当我检查时error.log,我看到PHP Warning: 'vcruntime140.dll' 14.0 is not compatible with this PHP build导致我回答这个问题。安装所需的可再发行组件解决了该问题。
akinuri

Answers:


415

打开Skype。

工具->选项->高级->连接。

取消选中“ 使用端口80和443替代传入连接 ”复选框

退出并关闭所有Skype窗口。尝试重新启动Apache。


7
如果对任何人都不起作用,请尝试检查错误日志。或者,如果您使用的是vmware,则必须进入“编辑”>“首选项”>“共享的VMS”>“禁用共享”,然后将端口从443更改为任何其他端口,例如8443,然后保存更改。重新启动xampp或wamp
Faisal Naseer 2014年

5
我仍然更改了Skype。解决方案最终是(stackoverflow.com/questions/14548768/…setup_xampp.bat以刷新路径]
Timmah 2015年

21
这不是正确的解决方案,因为端口可能会由于任何应用程序而被阻塞,而不仅仅是Skype。排名第二高的答案有更好的解决方案。
Rahul Kadukar

3
这是人们面临的最常见问题,尽管在我看来这不是问题。如果您在以下任何文件httpd.conf和httpd-vhosts.conf中输入错误,也可能会出现此问题。就我而言,我创建了一个虚拟主机,该主机指向外部硬盘驱动器上的文件位置,而在运行xampp时,我的外部硬盘驱动器未连接。因此,在不使用外部硬盘驱动器之前,我一直在注释虚拟主机代码,然后重新启动xampp来解决此问题。
Vineet Sajwan '16

2
它并不总是skype。我的问题是使用端口443的vmware。如果是这种情况,则不必更改端口80的配置。
Moradnejad '16

760

当我在开发人员面临防火墙问题的公司环境中工作时,没有其他答案可以解决我的问题。

由于该端口不是由Skype使用,而是由其他一些内部应用程序使用,因此我按照以下步骤解决了该问题:

步骤1-在XAMPP控制面板的Apache下,单击Config按钮,然后选择Apache(httpd.conf)。

httpd.conf文件中,我以某种方式找到了一行内容:

Listen 80

并将80更改为所需的任何数字/端口。在我的方案中,我使用端口8080。

Listen 8080

仍然从httpd.conf文件中,发现另一行显示:

ServerName localhost:80

将80更改为8080。

ServerName localhost:8080

步骤2-在XAMPP控制面板的Apache下,再次单击Config按钮,但这一次选择Apache(httpd-ssl.conf)。在httpd-ssl.conf文件中,找到显示以下内容的行

Listen 443

并将443更改为所需的任何数字/端口。我将使用4433作为新端口号。

Listen 4433

仍然从httpd-ssl.conf文件中,找到另一行显示

<VirtualHost _default_:443>

ServerName localhost:443

并将443更改为4433

<VirtualHost _default_:4433>

ServerName localhost:4433

进行一些更改后,请记住保存httpd.confhttpd-ssl.conf文件。然后重新启动Apache服务。


@ Min2提供的答案在每种情况下均有效,但有时会失败,因为您需要检查任务管理器中是否有名为“ Apache HTTP Service”的服务正在运行。结束该服务并执行上面定义的功能,现在您将发现Apache可以正常工作。
阿迪尔

4
我升级到Windows 10,但XAMPP无法正常工作。我遵循了您的解决方案,效果很好。
fuddin

6
这是Windows 10错误的修复程序。非常感谢 !
Javed阿里

3
为我工作。这应该是公认的解决方案;Skype解决方案非常有限。
ptrcao

1
我已经对80和443端口进行了更改,但仍然显示错误,我的系统中没有Skype
Bhargav Venkatesh,

96

您可以做的一件事是通过发出以下命令停止端口80上的服务

net stop http

在一个cmd中。系统将询问您是否确定要停止这些服务。我发现我有一些我没有使用的服务并禁用了它们。

要查看还有谁在使用端口80,请在cmd中键入

netstat -abno

我假设您想在端口80上运行Apache。如果是这种情况,并且想要保留冲突的服务,则需要将它们关联到新端口。

如果问题不是繁忙的端口,您还可以尝试以下操作:在XAMPP配置面板中选择“显示调试信息”。启动Apache时,将显示类似“正在执行“ c:\ xampp \ apache \ bin \ httpd.exe”的信息。

c:\xampp\apache\bin\httpd.exe

在cmd中,您将获得更多信息(例如,我曾经有一个httpd.conf文件问题)。

相关:如何在本地主机Windows上释放端口80?Apache将无法在xampp中运行


12
为httpd.exe +1。如果您缺少模块,请确保您的防病毒软件没有将其删除(尤其是如果您运行Kasperky)。
thomas88wp 2014年

1
我遇到了同样的问题,并通过确保/apache/conf/extras/httpd-bhosts.conf中指定的每个目录都是实际路径来解决了该问题。
马修

8
感谢在cmd上运行c:\ xampp \ apache \ bin \ httpd.exe的人抛出了确切的错误并能够修复它
Khan Shahrukh 2015年

该wordk在2019服务器上。net stop http可以解决问题,它会停止使用该端口的所有服务。我想手动启动此服务。
亨利

如果您使用的是Windows 7,最好查看Kunal的答案,该答案告诉您如何停止IIS。关于此技巧,此方法net stop http虽然有效,但具有使打印机在尝试打印某些东西时不再列出打印机的副作用(直到重新启动计算机)。
OuzoPower

79

在XAMPP控制面板V3.2.1中,单击右上方的“ NetStat”按钮。确保端口80没有被任何其他程序使用。然后单击其下方的“外壳”。发出此命令“键入ap然后按两次TAB”

Apache_Start.bat

您实际上将看到导致Apache失败的确切错误。这很可能是虚拟主机配置问题,也可能是其他问题。它将显示发生错误的行号。只需解决该错误。请注意,在RootDocument中,尾随\也可能是错误的来源。删除所有结尾的“ \”。


7
在花了数小时试图找出问题所在之后,这才帮了我很多忙-它告诉我有错别字。非常感谢@hmd
Sebastian Sulinski 2015年

谢谢,我更改了xampp文件夹名称,这有助于我发现错误。
彼得·阮

10
这应该是最好的答案,因为它可以解决XAMPP的任何可能的错误!
user11153 '16

这也应该是正确的答案。我在vhost中出现了一个愚蠢的错误,这是导致错误的原因....谢谢
Mikel

超级G ...是一个最佳答案,因为它可以解决XAMPP的任何可能的错误!
OpenWebWar

37

按着这些次序:

  1. 打开XAMPP控制面板,然后单击其“配置”
  2. 选择“ Apache(httpd.conf)”并在下面找到此代码,并将其更改为以下代码:

    #将其更改为侦听特定IP地址,如下所示

    #防止Apache陷入所有绑定的IP地址。

    #听0.0.0.0:80

    #听[::]:80

    Listen 80

    #动态共享对象(DSO)支持

    1. 保存(Ctrl+ S
    2. 之后,返回XAMPP控制面板并再次单击其配置。
    3. 选择“ Apache(httpd-ssl.conf)”,在下面找到此代码,然后再次进行更改:

    #注意:使用IPv6但不使用IPv4映射的地址的配置需要两个

    #监听指令:“听[::]:443”和“听0.0.0.0:443”

    #听0.0.0.0:443

    #听[::]:443

    Listen 443

    1. 保存它(Ctrl+S
    2. 然后,单击“配置”(注意:netstat上方),然后单击“服务和端口设置”​​。
    3. 将“主端口”更改为8080,将“ SSL端口”更改为4433,然后将其保存。
    4. 最后,转到“控制面板”->“程序和功能”->“打开或关闭Windows”。
    5. 取消选中“ Internet信息服务”,然后单击“确定”。

只需等待它,您的计算机/笔记本电脑将自动重启,并尝试再次打开XAMPP控制面板,然后启动Apache。


11
小心。如果已安装VMWare Workstation(10.0),则共享VM的选项是侦听端口443。这将阻止Apache服务器启动(xampp)。请参阅“编辑”>“首选项”>“共享虚拟机”
toesslab 2013年

3
听80->听81(第58行附近)ServerName localhost:80-> ServerName localhost:81(第218行附近)
Noah Martin

2
为我工作。我试图使用XAMPP'Config GUI'更改Apache端口,但没有运气。手动更改它,一切正常。懒惰的另一个严酷的教训。
马特·卡尔

最后是我的解决方案。我已经更改了Skype的内容,但没有帮助。谢谢!(:唯一的问题是点3 4在你描述的最后一部分。
codepleb

为我工作,我在没有VMware的情况下使用Windows7。+1
user3437460 2014年

25

我的问题是在httpd.conf中DocumentRoot<Directory>条目指向不存在的文件夹。

例如,“原始” httpd.conf具有以下条目:

DocumentRoot "c:/Apache24/htdocs"
<Directory "c:/Apache24/htdocs">

如果您已安装在C:\ xampp中,则需要更改这些条目以使其匹配,即

DocumentRoot "c:/xampp/htdocs"
<Directory "c:/xampp/htdocs">

我重命名了文件夹,这导致了无效的根http文件夹,并且没有让XAMPP启动。将文件夹名称更改为正确的名称可解决此问题:)
VSB

1
+1,我完全忘记了我重组了文件夹=)
MortenHøgseth2014年

我也是-“ ...但是我什么都没改变!...”是的,除了根目录名-哎呀。;)
CramerTV 2014年

2
只是一个简单的答案,有时会提醒一个人自己的愚蠢..:D为我做到了,谢谢!
查理·卡佛,2015年

20

如果您使用的是Windows 7。在Windows搜索中搜索IIS(单击左下角的“窗口”图标,然后在显示“搜索程序和文件”的位置键入内容)。

打开IIS(Internet信息服务)

在“动作”面板的右侧。单击停止。

注意:截屏中的停止链接会逐渐消失。由于我已停止。 IIS屏幕截图 问题解决了!


2
在Windows 10上找不到要执行的IIS,然后我卸载了IIS Control Panel > Programs > Programs and Features > Windows Components,最终解决了该问题。
自动扶梯

@escalator好,我已经明确提到过“如果您使用的是Windows 7”。
Kunal

谢谢。在尝试了其他一些技巧之后,我的工作像魔术一样为我解决了这个问题。net stop http高位命令提示符中的from也起作用,但是有副作用,使打印机不可用。
OuzoPower

17

我遇到了同样的问题,结果我忘记了运行setup_xampp.bat(便携式版本)。


2
将xampp文件夹移动到c:\以外的驱动器后,apache不再启动。这个解决方案对我有用。非常感谢!:)
Pascal Cloverfield 2014年

当我们将Xampp软件下载为zip归档文件并尝试启动Apache服务器时,我认为此步骤是必需的。
shasi kanth 2015年

这是便携式版本(我的情况)的答案。感谢您指出。
西德尼·德·莫拉兹

它也解决了我的问题。我不在便携式版本上。我在Windows 10上下载了xampp的安装程序。安装后(它是exe文件而不是zip文件),我遇到了第一篇文章中描述的问题。搜索此问题的解决方案后,我运行setup_xampp.bat,现在它可以工作了。
quokka-web

由于更改了驱动器名称,并且绝对文件路径完全混乱,导致Windows损坏。我运行了setup_xampp.bat,一切都重新正确配置。
gegobyte

16

这对我有用...

如果您使用的是Windows ...

在Windows搜索栏中搜索“ cmd”。

输入此:C:\xampp\apache\bin\httpd.exe

查找发生错误的文件和行。

例如,第37行下方的文件中包含了mine。

httpd-multilang-errordoc.conf

打开代码并通过删除行或修复错误来纠正错误。

做完了!我现在应该工作。

:)


大!谢谢,这确实对我有所帮助
Capensis

谢谢。它的工作。我的vhost配置文件中有语法错误
Emtiaz Zahid

12

似乎没有人回答执行xampp_start.exe。

我做了前面所有的回答,但是并没有解决我的问题。我发现运行xampp_start.exe将为您提供有关该问题的详细信息。

这是我最后看到的:

xampp_start

如您所见,我遇到路径问题或xampp指向不存在的文件夹。


这是救生员。我的SSL和日志文件路径无效。这帮助我纠正了它,现在可以正常工作了。
阿里·阿扎尔

很酷的答案。拯救了我的一天
拉朱(Raju)

11

当我发现通过命令使用端口80时没有进程

netstat -abno | find ":80"

使用端口80没有任何问题。

然后我运行命令(在cmd中)

C:\xampp\apache\bin\httpd.exe

它显示了httpd-vhosts.conf文件中的虚拟主机配置中的一些错误,该文件最近由我编辑过,用于安装在Eclipse IDE 的WordPress PHP环境中。所以我删除了这些行,Apache完美启动。


2
完善!我为日志文件指定了错误的目录,因此它没有启动。修复,解决问题!
哈马德·汗

你摇滚!!上述所有解决方案均不适用于我,当我尝试执行操作时,它给我有关httpd-xampp.conf中SSLRequiredSSL行的另一个错误,然后我在其前面插入#来禁用它。顺便说一句,每次修复后,我不得不在命令行中多次重新运行C:\ xampp \ apache \ bin \ httpd.exe,以找到另一行出现相同错误的行。
2012年

11

您可以做的简单事情是检查Skype还是VMware安装了。

Skype使用端口80和443作为传入连接的附加端口。要在Skype中更改端口号,请转到

工具>连接选项>连接

在Skype窗口中。现在,将默认的80端口号更改为其他端口号。

VMware Workstation使用端口443进行共享。要更改此设置,请打开VMware Workstation并转到

编辑>首选项>共享Vms

  1. 点击“更改设置”按钮
  2. 然后点击“禁用共享”
  3. 然后更改正在使用的https端口号(443)
  4. 然后您可以点击“启用共享”按钮

那就是你要做的。重新启动XAMPP并运行Apache服务器。


进行Skype更改后,Apache仍未启动,因此我进行了上述的VmWare更改,并且该更改有效。
Haris ur Rehman

9

有时我遇到了同样的问题。我有一台旧笔记本电脑,几乎所有端口都被阻塞或出现故障。这就是我做的。

  1. 打开XAMPP控制面板。

  2. 点击配置

  3. 然后,进入Apache httpd.conf文件。用文本编辑器打开它。

  4. 搜索“ 80” (执行Ctrl+,F然后全部找到。将其替换为8080或4040或4000)。

  5. 保存文件。并重新启动XAMPP。

它对我来说效果很好,希望对您也有帮助。


6

对我而言,万维网发布服务正在使用端口80。我通过在cmd上运行以下命令来杀死它:

net stop http

之后,XAMPP毫无问题地运行了Apache。


1
解决了我的问题,但是现在我们停止了一些服务,这些服务如何影响我的网络?
卡拉瓦纳2014年

我以管理员身份运行命令提示符,并且此方法有效。但是我的问题是,停止的服务不会影响正常的计算,并且,我将如何再次使这些服务停止,重新启动并再次运行。
AMRESH PANDEY,2017年

@AMRESHPANDEY我发现在这种情况下可能有用的东西。我没有尝试它是否有效。随意添加它作为一个答案,如果它的工作原理:mikeplate.com/2011/11/06/...
Memet的奥尔森

5

发生此错误的原因是为另一个程序使用了为Apache分配的端口。要检查使用我们为Apache分配的端口的应用程序,可以通过单击以下命令进行使用,

Netstat按钮。

XAMPP主页

这是Netstat文件,

在此处输入图片说明

首先,我为Apache分配了端口8080,最近安装了Oracle DB.TNSLSNR.exe现在已使用8080端口。

因此,通过查看此文件,我们可以选择不与其他应用程序冲突的端口。就我而言,端口8060不会与任何应用程序冲突。通过选择,我们可以如上所述更改httpd.conf文件(XAMPP控制面板-> Config)。



4

就我而言,此问题是由于尝试下载bitnami的其他产品(如WordPress)引起的。当我们通过XAMPP安装WordPress时,这很常见。它放置在xampp/app可以从XAMPP应用程序主页访问的目录中。

作为解决方案,我从xampp目录中删除了默认安装的WordPress,并htdocs通过下载并将zip文件解压缩到该htdoc文件夹中而将WordPress 手动安装在WordPress文件夹中。您还需要重新启动XAMPP或在卸载/删除默认WordPress后重新启动系统。现在对我来说一切都很好。


3
  1. 首先确保您的\xampp文件夹在根目录中!这很重要,因为路径是相对的。

  2. 然后确保您xampp_control.exe使用管理员权限运行。

  3. 然后更改以下文件,以避免端口80阻塞的问题。

\xampp\xampp-control.ini其中应设置:

[ServicePorts]
Apache=8080
ApacheSSL=4433

查找\xampp\apache\conf\httpd.conf并设置:

Listen 8080

ServerName localhost:8080

查找\xampp\apache\conf\extra\httpd-ssl.conf并设置:

Listen 4433

<VirtualHost _default_:4433>

ServerName www.example.com:4433

然后终止所有服务,并xampp-control.exe以管理员权限重新启动。它应该运行!


3

我刚在xampp v3.2.2 [win 10 pro x64]上遇到此错误,

我首先尝试在admin cmd中运行“ net stop http”命令,但是它没有解决问题,因此我继续尝试“ netstat -abno”命令,结果发现ssl端口(443)在由vmware使用。

因此,我的建议不仅是寻找阻塞端口80的端口,还寻找使用端口443的潜在程序。因为我真的不喜欢将默认端口号更改为8081和4433。

所以这就是解决这个问题的方法...

首先输入以下命令

net stop http

如果仍然无法使用,请尝试启动apache。输入以下命令

netstat -abno

而且您肯定会得到那个麻烦的应用程序,它耗尽了您宝贵的端口。

复制pid,然后使用以下命令

taskkill /f /pid PID

PID是您复制的PID。

希望这对某人有帮助。


2

发生这种情况的原因是默认端口80被Apache阻止。您需要更改端口或使端口可访问。

转到 Apache安装中的Apache 配置(httpd.conf)文件。

找到这些行:

192.168.1.2:80

80

192.168.1.2是我的私有IP地址。根据您的要求进行更改。

更改如下

听192.168.1.2:8081

听8081

现在,当您访问localhost时,必须将端口明确添加为 http:// localhost:8081 / ...


2

原因之一可能是您没有以管理员身份运行XAMPP控制面板。


2

我通过停止服务“ Web部署代理服务”解决了问题。打开:系统 -> 计算机管理 -> 服务 -> Web部署代理服务。停止此服务,然后启动XAMPP。我认为这是MS Webmatrix提供的服务。

(德语:Systemsteeuerung- > System und Sicherheit- > Verwaltung- > Dienste- > Webbereitstellungs-Agent-Dienst


2

我有与OP完全相同的错误消息,但是任何现有的答案都没有解决我的问题。许多答案都与端口80上的冲突有关,我知道我没有,因为我最近有本地主机在端口80上响应。

原来,当我打算更改DocumentRoot时,我无意中更改了ServerRoot(这是愚蠢的,我知道),尽管存在新的ServerRoot目录,但是它不包含配置文件和其他所需的Apache东西,这导致它在启动时失败。错误消息可能通过措词“ 缺少依赖项 ” 解决了这种情况。

在我的Windows系统上,将ServerRoot设置回C:/ XAMPP / apache解决了该问题。


2

默认情况下,Apache服务器在端口80、443上运行。您的问题是两个端口之一或两个都处于繁忙状态。通常,Skype或VMware Workstation使用这两个端口。因此,请确保它们没有运行。确保端口在Windows上空闲的最佳方法是:

  • 单击窗口按钮。

  • 在搜索栏中,键入resmon,以打开资源监视器resmon.exe

  • 打开监听端口,这将向您显示打开的已使用端口。

  • 现在,您可以看到哪个进程正在使用端口80和443。

  • 然后,您可以使用CMD的PID(在资源监视器中显示)从CMD中终止该进程,也可以直接从任务管理器中终止该进程。

  • 要使用PID类型从CMD Taskkill /PID 26356 /F终止进程,其中26356是PID。


2

Windows用户的最佳解决方案是:

  1. 打开netstat(来自XAMPP CONTROL PANEL)
  2. 查找使用端口80的进程的PID。
  3. 通过管理打开CMD。
  4. 运行taskkill /pid PID(而不是从netstat中找到的PID使用pid u)
    嘿,享受u完成.....

2

好了,没有端口80,没有Skype的责备!我的问题确实很简单(&silly),在为DocumentRoot指令指定的路径之后,我在Windows上有一个额外的反斜杠(\),因此我进行了这样的更改,问题像鸭子汤一样消失了。

我的index.php位于路径“ D:\ websites \ dummy”中,而我的httpd.conf像这样:

<VirtualHost 127.0.0.2:80>
ServerName dummy.local
DocumentRoot "D:\websites\dummy\" #mistake here
</VirtualHost>
<Directory "D:\websites\dummy\"> #mistake here
    Require all granted
</Directory>

因此,只需像这样更改这两行:

#first mistake fix:
DocumentRoot "D:\websites\dummy"
#second (similar) mistake fix:
<Directory "D:\websites\dummy">

...现在一切都很好。为防止将来发生此类错误,请始终复制要引用的任何文件夹的路径,而不要自己输入。


1

对我来说,当我在Windows 8计算机上托管VPN连接时,此问题就开始了。

只需从“控制面板\网络和Internet \网络连接”中删除连接即可解决此问题。


1

请注意,无论何时更改默认端口,您的浏览器都不会知道。80并且443似乎在某种程度上是标准的,例如,如果您更改808080,则必须以这种方式访问​​您的网站,然后:

localhost:8080/path_to_your_website.php



1

最佳解决方案

打开XAMPP控制面板,单击Apache的配置,然后在文本编辑器中单击Apache(httpd.config).now。ctrl + f->找到“ Listen 80”并用引号将其替换为“ Listen 8079” :),但是现在您必须像这样使用它http:// localhost:8079 /

PS,我尝试更改skype的端口设置,停止在Windows 10,cmd-> net stop http中找不到的Web部署代理服务,以及其他方法,但除此以外没有任何效果。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.