【问题标题】:XAMPP, Apache - Error: Apache shutdown unexpectedlyXAMPP,Apache - 错误:Apache 意外关闭
【发布时间】: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。安装所需的可再发行组件解决了这个问题。

标签: apache xampp


【解决方案1】:

按照以下步骤操作:

  1. 打开您的 XAMPP 控制面板,然后单击其“配置”
  2. 选择“Apache (httpd.conf)”,在下面找到这段代码,改成这个:

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

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

    #Listen 0.0.0.0:80

    #Listen [::]:80

    Listen 80

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

    1. 保存 (Ctrl + S)
    2. 之后,返回 XAMPP 控制面板并再次单击其配置。
    3. 选择“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

    1. 保存 (Ctrl + S)
    2. 然后,点击“config”(注意:在netstat上方),点击“service and port settings”。
    3. 将“主端口”更改为 8080,将“SSL 端口”更改为 4433,然后保存。
    4. 最后,转到“控制面板”->“程序和功能”->“打开或关闭 Windows”。
    5. 取消选中“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,仍然注意到。解决方案最终是(stackoverflow.com/questions/14548768/… setup_xampp.bat 刷新路径]
  • 这不是正确的解决方案,因为任何应用程序都可能阻止端口,而不仅仅是 Skype。投票数第二高的答案有更好的解决方案。
  • 这是人们面临的最常见的问题,尽管这不是我的问题。如果您在这些文件 httpd.conf 和 httpd-vhosts.conf 中有错误条目,也可能会出现此问题。在我的情况下,我创建了一个虚拟主机,它指向我的外部硬盘驱动器上的文件位置,当我运行 xampp 时,我的外部硬盘驱动器没有连接。所以,我注释掉了虚拟主机代码,直到我没有使用外部硬盘驱动器并重新启动 xampp 来解决问题。
  • 它并不总是Skype。我的问题是使用端口 443 的 vmware。如果是这种情况,您不必更改端口 80 配置。
【解决方案4】:

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

只需从“控制面板\网络和 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】:

      您可以做的简单事情是检查您的机器中是否安装了SkypeVMware

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

      工具 > 连接选项 > 连接

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

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

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

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

      这就是你所要做的。重启 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】:

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

                  1. 打开 XAMPP 控制面板。

                  2. 点击配置

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

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

                  5. 保存文件。并重新启动 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】:
                          1. 下载新的xamppapachefriends
                          2. 安装它
                          3. 删除所有 VPN 应用
                          4. 打开文件夹 XAMPP 运行 setup_xampp.bat
                          5. 运行 xampp-control.exe

                          【讨论】:

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

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

                          1. 关闭或终止正在使用该端口的进程/应用程序。
                          2. 为您的 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。

                                  【讨论】:

                                    猜你喜欢
                                    • 2021-10-04
                                    • 1970-01-01
                                    • 2015-11-21
                                    • 2018-01-26
                                    • 2017-09-26
                                    • 1970-01-01
                                    • 2020-09-27
                                    相关资源
                                    最近更新 更多