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

Posted

技术标签:

【中文标题】XAMPP,Apache - 错误:Apache 意外关闭【英文标题】:XAMPP, Apache - Error: Apache shutdown unexpectedly 【发布时间】:2013-08-20 10:58:51 【问题描述】:

我刚刚重新安装了 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,这让我看到了answer。安装所需的可再发行组件解决了这个问题。 【参考方案1】:

按照以下步骤操作:

    打开您的 XAMPP 控制面板,然后单击其“配置”

    选择“Apache (httpd.conf)”,在下面找到这段代码,改成这个:

    #将此项更改为监听特定IP地址,如下所示

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

    #Listen 0.0.0.0:80

    #Listen [::]:80

    Listen 80

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

      保存 (Ctrl + S) 之后,返回 XAMPP 控制面板并再次单击其配置。 选择“Apache (httpd-ssl.conf)”,在下面找到这段代码,重新修改一下:

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

    # Listen 指令:“Listen [::]:443”和“Listen 0.0.0.0:443”

    #

    #Listen 0.0.0.0:443

    #Listen [::]:443

    Listen 443

      保存 (Ctrl + S) 然后,点击“config”(注意:在netstat上方),点击“service and port settings”。 将“主端口”更改为 8080,将“SSL 端口”更改为 4433,然后保存。 最后,转到“控制面板”->“程序和功能”->“打开或关闭 Windows”。 取消选中“Internet 信息服务”,然后单击“确定”。

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

【讨论】:

小心。如果您安装了 VMWare Workstation (10.0),则共享 VM 的选项将侦听端口 443。这会阻止 Apache 服务器启动 (xampp)。请参阅编辑 > 首选项 > 共享虚拟机 Listen 80 --> Listen 81(近 58 行) ServerName localhost:80 --> ServerName localhost:81(近 218 行) 为我工作。我试图使用 XAMPP 'Config GUI' 更改 Apache 端口,但没有运气。手动更改它,一切正常。懒惰的另一个严厉教训。 终于为我解决了。我已经改变了Skype的东西,但它没有帮助。谢谢! (:唯一的问题是您描述的最后部分的第 3 点和第 4 点。 为我工作,我使用的是没有 VMware 的 windows7。 + 1【参考方案2】:

您可以做的一件事是通过发出来停止端口 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 文件有一些问题)。

相关:How do I free my port 80 on localhost Windows? 和 Apache won't run in xampp

【讨论】:

+1 用于 httpd.exe。如果您缺少模块,请确保您的防病毒软件没有删除它们(尤其是在您运行 Kasperky 时)。 我遇到了同样的问题,并通过确保 /apache/conf/extras/httpd-bhosts.conf 中指定的每个目录都是实际路径来解决它。 感谢在 cmd 上运行 c:\xampp\apache\bin\httpd.exe 的人抛出了确切的错误并能够修复它 这个词在 2019 服务器上。 net stop http 会停止使用该端口的所有服务。我将此服务情绪化为手动启动。 如果您使用的是 Windows 7,最好查看 Kunal 的回答,该回答告诉您如何停止 IIS。关于这个技巧,net stop http 起作用了,但是在尝试打印某些东西时(直到重新启动计算机)时,打印机不再列出。【参考方案3】:

打开 Skype。

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

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

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

【讨论】:

如果它对任何人都不起作用,请尝试检查错误日志。或者,如果您使用的是 vmware,请转到 EDIT > PREFERENCES > SHARED VMS > DISABLE SHARING 并将端口从 443 更改为任何其他端口,例如 8443 并保存更改。重启 xampp 或 wamp 我换了skype,仍然注意到。解决方案最终是(***.com/questions/14548768/… setup_xampp.bat 刷新路径] 这不是正确的解决方案,因为任何应用程序都可能阻止端口,而不仅仅是 Skype。投票数第二高的答案有更好的解决方案。 这是人们面临的最常见的问题,尽管这不是我的问题。如果您在这些文件 httpd.conf 和 httpd-vhosts.conf 中有错误条目,也可能会出现此问题。在我的情况下,我创建了一个虚拟主机,它指向我的外部硬盘驱动器上的文件位置,当我运行 xampp 时,我的外部硬盘驱动器没有连接。所以,我注释掉了虚拟主机代码,直到我没有使用外部硬盘驱动器并重新启动 xampp 来解决问题。 它并不总是Skype。我的问题是使用端口 443 的 vmware。如果是这种情况,您不必更改端口 80 配置。【参考方案4】:

对我来说,这个问题始于我在我的 Windows 8 计算机上托管 *** 连接。

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

【讨论】:

【参考方案5】:

我的问题是在 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 启动。将文件夹名称更改为正确的名称解决了这个问题:) +1,我完全忘记了我重组了我的文件夹 =) 我也是 - “......但我没有改变任何东西!......”是的,除了根目录名称 - 哎呀。 ;) 只是一个简单的答案,有时会提醒自己的白痴......:D为我做到了,谢谢!【参考方案6】:

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

net stop http

之后,XAMPP 运行 Apache 没有任何问题。

【讨论】:

解决了我的问题,但现在我们停止了一些服务,这些服务如何影响我的网络? 我以管理员身份运行命令提示符,这很有效。但我的问题是,停止的服务是否会影响正常计算,以及如何让这些服务停止、启动并再次运行。 @AMRESHPANDEY 我发现了一些在这种情况下可能有用的东西。我没有尝试它是否有效。如果可行,请随时将其添加为答案:mikeplate.com/2011/11/06/…【参考方案7】:

我收到了上面相同的错误,导致我的原因是在文件“httpd-vhosts.conf”中我在&lt;Directory&gt;标签中添加了这样的注释...

<Directory "*PATH TO MY FOLDER*...">
        AllowOverride All
        Require all Granted    ## This directive could/should be set to denied.
</Directory>

一旦我删除了评论,Apache 就启动了。我想我应该把评论放在自己的行上。我只是想,就像其他网络代码一样,它可能在那里。

【讨论】:

【参考方案8】:

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

【讨论】:

在将我的 xampp 文件夹移动到 c:\ 以外的另一个驱动器后,apache 不再启动。这个解决方案对我有用。非常感谢! :) 我认为这一步是强制性的,当我们将 Xampp 软件下载为 zip 存档并尝试启动 Apache 服务器时。 这是便携式版本的答案(我的情况)。感谢您指出。 它也解决了我的问题。我不在便携式版本上。我在 Windows 10 上下载了 xampp 的设置。安装后(它是 exe 而不是 zip),我遇到了第一篇文章中描述的问题。在搜索了这个问题的解决方案后,我运行了 setup_xampp.bat,现在它可以工作了。 我的 Windows 已损坏,原因是驱动器名称已更改,并且绝对文件路径完全混乱。我运行了 setup_xampp.bat,一切都重新正确配置了。【参考方案9】:

您可以做的简单事情是检查您的机器中是否安装了Skype 或VMware。

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

工具 > 连接选项 > 连接

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

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

编辑 > 首选项 > 共享虚拟机

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

这就是你所要做的。重启 XAMPP 并运行 Apache 服务器。

【讨论】:

改了skype后,apache还没有启动,所以我做了上面提到的VmWare更改,它工作了。【参考方案10】:

我遇到了同样的问题(在 Windows 8.1 上),但我只是通过提取到 C:\ 而不是像我最初所做的那样提取到 C:\somefolder 来解决它。所以控制面板的路径例如现在是C:\xampp\xampp-control.exe

【讨论】:

【参考方案11】:

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

由于该端口不被 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 服务。

【讨论】:

我升级到 Windows 10 并且 XAMPP 无法正常工作。我遵循了您的解决方案,效果很好。 这是针对 windows 10 错误的修复。非常感谢! 为我工作。这应该是公认的解决方案; Skype 解决方案非常有限。 我已经对 80 和 443 端口进行了更改,但仍然显示错误我的系统中没有Skype 好像httpd-ssl.conf上需要编辑的第二行叫做:ServerName www.example.com:4433【参考方案12】:

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

netstat -abno | find ":80"

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

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

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

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

【讨论】:

完美!我为日志文件指定了错误的目录,因此它没有启动。解决问题! 你摇滚!!!!以上所有解决方案都对我不起作用,当我尝试你所做的事情时,它给了我一个关于 httpd-xampp.conf 中 SSLRequiredSSL 行的不同错误,然后我在它前面插入了 # 以禁用它。顺便说一句,每次修复后,我不得不在命令行中多次重新运行 C:\xampp\apache\bin\httpd.exe 以找到另一行有相同错误的行。 这条评论救了我很多次。这应该是正确的答案。每当我遇到 XAMPP 问题时,它都会在控制面板中给出相同的通用消息:“Apache 意外关闭”。我只是将上面的命令按 ctrl+v 进入终端,然后我收到一条实际的错误消息,其中包含 Apache 意外关闭的原因! 我猜 XAMPP 开发人员只是不了解详细错误消息的价值。再次感谢@JDP!【参考方案13】:

在 XAMPP 控制面板 V3.2.1 中,单击右上角的“NetStat”按钮。确保端口 80 未被任何其他程序使用。然后单击它正下方的“Shell”。在 shell 提示符下发出此命令;

Apache_Start.bat

或键入“ap”,然后按 Tab 键两次,这将类似地生成上述命令。 您实际上会看到 Apache 失败的确切错误。这很可能是虚拟主机配置问题,或者可能是其他问题。它将显示发生错误的行号。只需修复该错误。请注意,在 RootDocument 中,结尾的 \ 也可能是错误的来源。删除任何尾随的“”。

【讨论】:

这对我帮助很大——它告诉我有一个错字——花了几个小时试图找出问题所在。非常感谢@hmd 谢谢,我更改了 xampp 文件夹名称,这帮助我找到了错误。 这应该是最佳答案,因为它适用于 XAMPP 的任何可能错误! 这也应该是正确的答案。我在虚拟主机中有一个愚蠢的错误,这导致了错误....谢谢 Super G... 是最佳答案,因为它适用于 XAMPP 的任何可能错误!!!【参考方案14】:

这是由于 Apache 的默认端口 80 被阻止而发生的。您需要更改端口或使端口可访问。

转到 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/...

【讨论】:

【参考方案15】:

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

【讨论】:

这是必须检查的第一件事!谢谢【参考方案16】:

我解决了停止服务“Web 部署代理服务”的问题。打开:系统 -> 计算机管理 -> 服务 -> Web部署代理服务。停止此服务并启动 XAMPP 工作。 我认为这是 MS Webmatrix 的一项服务。

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

【讨论】:

【参考方案17】:

在我的情况下,这个问题是由尝试下载其他 bitnami 产品引起的,例如WordPress。这在我们通过 XAMPP 安装 WordPress 时很常见。它位于xampp/app 目录中,可以从XAMPP 应用程序主页访问。

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

【讨论】:

【参考方案18】:

在 Windows 8.1 上从 5.6.8 安装最新的 5.6.12 对我有用。

【讨论】:

【参考方案19】:

请注意,无论何时更改默认端口,您的浏览器都不会知道这一点。 80443 在某些方面似乎是标准的,例如,如果您将 80 更改为 8080,那么您必须以这种方式访问​​您的网站:

localhost:8080/path_to_your_website.php

【讨论】:

【参考方案20】:

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

    打开 XAMPP 控制面板。

    点击配置

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

    搜索 "80"(执行 Ctrl + F 并找到所有这些。将其替换为 8080或 4040 或 4000)。

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

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

【讨论】:

【参考方案21】:

发生此错误是因为分配给 Apache 的端口被另一个程序使用。要检查使用我们为 Apache 分配的端口的应用程序,可以通过单击来查看,

Netstat 按钮。

这是 Netstat 文件,

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

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

【讨论】:

【参考方案22】:

在我的情况下,这是在安装 sql server 之后发生的,解决方案如本答案所述

Xampp - Can't start Apache after install SQL Server and Visual Studio

所以我只需要从 Windows 服务中禁用“SQL Server Reporting Services”服务

【讨论】:

【参考方案23】:

最佳解决方案

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

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

【讨论】:

【参考方案24】:
    下载新的xamppapachefriends 安装它 删除所有 *** 应用 打开文件夹 XAMPP 运行 setup_xampp.bat 运行 xampp-control.exe

【讨论】:

我已经按照第 4 点,运行 setup_xampp.bat 并启动服务(第 5 点),一切正常。【参考方案25】:

通常会出现xampp 端口错误,因为尝试访问的默认端口80 xampp 正在被另一个应用程序使用。大多数情况下,此应用程序是 Skype。 所以,你有两种方法可以解决这个问题:

    关闭或终止正在使用该端口的进程/应用程序。 为您的 xampp 应用程序使用其他端口。 (我个人更喜欢这种方法)。

这些方法在这篇文章How to debug xampp port 80 error中有很好的解释

【讨论】:

【参考方案26】:

首先,您应该确认您的 httpd-vhosts 文件中没有多余的虚拟主机。我的意思是遵循简单的规则:配置文件中的 1 个项目 = 1 个虚拟主机。否则,即使您更改端口等,您也会面临错误。

【讨论】:

【参考方案27】:

如果您使用的是 Windows 7 。在 Windows 搜索中搜索 IIS(单击左下角的 Window 图标并在其中输入“搜索程序和文件”)。

打开IIS(互联网信息服务)

在操作面板的右侧。点击停止。

注意:停止链接在屏幕截图中淡出。因为我已经阻止了它。 问题解决了!

【讨论】:

在Windows 10上找不到要执行的IIS,然后我从Control Panel &gt; Programs &gt; Programs and Features &gt; Windows Components卸载了IIS,终于解决了。 @escalator 好吧,我已经明确提到“如果您使用的是 Windows 7”。 谢谢。在尝试了其他几个提到的技巧失败后,它就像一个魅力一样为我解决了这个问题。来自提升的命令提示符的 net stop http 也可以正常工作,但会产生使打印机不可用的副作用。【参考方案28】:

我收到了与 OP 完全相同的错误消息,但任何现有答案都没有解决我的问题。许多答案都处理端口 80 上的冲突,我知道我没有,因为我最近有 localhost 在端口 80 上响应。

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

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

【讨论】:

【参考方案29】:

很可能您有另一个正在运行的“mysqld”进程将其杀死,然后重新运行 xampp MySQL,您不会收到任何错误。

【讨论】:

【参考方案30】:

Apache 服务器默认在 80、443 端口上运行。您的问题是两个端口中的一个或两个都忙。通常 Skype 或 VMware Workstation 使用这两个端口。因此,请确保它们没有运行。确保端口在 Windows 上可用的最佳方法是:

点击窗口按钮。

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

打开监听端口,这将显示你打开的使用端口。

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

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

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

【讨论】:

以上是关于XAMPP,Apache - 错误:Apache 意外关闭的主要内容,如果未能解决你的问题,请参考以下文章

启动apache时出现xampp错误说停止apache

Apache 不会在 xampp 上启动:“Apache 服务检测到错误的路径”

如何修复XAMPP“Apache / mysql意外关闭”错误

Apache 服务器未从 XAMPP 控制面板运行。给出错误

Xampp Apache 服务器无法启动 - “错误:Apache 意外关闭。”

xampp 错误(我在安装 Xampp 和 apache 时遇到此错误。我该如何处理?)