XAMPP - Apache 无法启动 - 正在尝试启动 Apache 服务

XAMPP - Apache could not start - Attempting to start Apache service

在尝试使用 XAMPP 启动 Apache 时,我在 XAMPP UI 中收到 - "Attempting to start Apache service..." 消息。没有进一步的详细信息。

我在哪里可以看到日志(我是 运行 XAMPP 管理员)?

我意识到这是一个端口问题,因为我的机器上有 运行 IIS 和其他 Web 服务器。但我更感兴趣的是在 UI.

中看到带有端口号的详细错误消息

似乎它没有记录在 UI 或日志文件中(至少在我的情况下),但在事件查看器中(控制面板 -> 查看事件日志)。 偶查看器下->Windows日志->应用程序

我可能会看到如下所示的权限错误:

An attempt was made to access a socket in a way forbidden by its access permissions. : AH00072: make_sock: could not bind to address 0.0.0.0:443

要解决此 SSL 端口权限问题,请更改 httpd-ssl.conf (C:\xampp\apache\conf\extra)[=13= 中的以下行]

 # When we also provide SSL we have to listen to the 
 standard HTTP port (see above) and to the HTTPS port

     Listen xxx

将 XXX 替换为您计算机中打开的任何有效端口号

如果端口 80 有问题,请更改 httpd.conf 文件 (C:\xampp\apache\conf)

# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
 Listen 127.0.0.1:8000

我也总结了我遇到的其他解决方案:

  1. Skype 通常会阻止 Apache 端口。所以终止它并重试。
  2. 找到正在使用阻塞端口 (netstat -ano) 的进程 ID (PID) 并在 Windows 任务管理器中终止相应的进程。

开始 xampp(作为管理员), (1)右击C:\xampp\xampp-control.exe,以管理员身份运行。 (2) 卸载服务模块,然后安装服务模块。 (3) 现在尝试启动 apache 和 mysql.

检查您的 DocumentRoot 路径(在 httpd.conf 中);那里的错字可能会导致这个问题。

如果端口 80 不是问题!

首先检查端口 80 是否正在使用,因为这可能是一个问题。 您可以通过在 cmd 中键入 "netstat -an" 来完成此操作。在本地地址下查找 0.0.0.0:80,如果您发现它正在使用中,请按照@Karthik 的解决方案进行操作。但是,我遇到了类似的问题,但我的端口 80 未被使用。 我的 XAMPP 有错误的路径位置,解决此问题的步骤:

1.Find 您正在使用的 Apache 版本,您可以通过查看服务(控制面板、管理工具、服务)并找到 Apache 在我的例子中它被列为 Apache2.4

2.Close XAMPP.

3.Run 以管理员身份运行。

4.execute 'sc delete "Apache2.4"'(将您的版本替换为我的版本,并且没有周围的 ' ',但在 Apache 周围有 " ")。

5.execute 'sc delete "mySQL"',输入时再次删除 ''。

6.reopen XAMPP 并尝试启动 Apache

如果您在使用 FileZill、Mercury 或 Tomcat 时遇到问题,您也可以在这里尝试,但我自己还没有测试过。

希望对您有所帮助!

将 Xampp 作为控制台应用程序启动(只需双击 Xampp 根文件夹中的 xampp_start.exe)是我在 Windows 10 (没有 Skype,没有 Word Wide Web 发布服务)。 WampServer 和 UwAmp 也没有工作。

更新到 PHP7.2

时遇到同样的问题

问题: 首先我关闭了 skype,然后检查端口 80 是否不是问题。你怎么能检查呢?请参阅上面的@AlexT 评论。

就我而言,端口 80 不是问题。所以现在我必须找出问题所在。所以我检查了错误日志 Control Panel > Even viewer > Windows Logs > Application 并发现以下针对 Apache2.4

的错误

httpd.exe: Syntax error on line 520 of C:/xampp/apache/conf/httpd.conf: Syntax error on line 18 of C:/xampp/apache/conf/extra/httpd-xampp.conf: Cannot load C:/xampp/php/php7ts.dll into server: The Apache service named is not a valid Win32 application.

这意味着我安装了错误的 PHP 版本。其实我下载的是win64版本,而我需要的版本是Win32。

所以我从以下位置下载了正确的版本:Download PHP 7.2.0 将其解压缩到 C:/xampp/php 文件夹中,重新启动了 apache 并且它工作了:)

在我测试了所有可能的选项后,我的场景有所不同。如果您更改了端口但仍然遇到同样的问题,那么您可以尝试一下。这是在 Windows 7 中完成的。

第 1 步: 通过转到控制面板 -> 系统和安全 -> 管理工具 -> 事件查看器 -> Windows 日志确认错误原因-> 应用程序 -> 错误。我的说“名为的 Apache 服务报告了以下错误:

httpd.exe: Syntax error on line 424 of C:/xampp/apache/conf/httpd.conf: Cannot load c:\xampp\php\php5apache.dll into server: The specified module could not be found." So I needed to change \php5apache.dll to the version of my php and apache version installed which was php7apache2_4.dll

第 2 步: 要为您的 .dll php 和 apache 文件获取正确的名称,请转到 C:\xampp\php。您会在文件夹中看到类似 php7apache2_4.dll 的内容以及其他文件。

第 3 步: 转到 C:/xampp/apache/conf/httpd.conf 并编辑配置文件并将 "c:\xampp\php\php5apache.dll" 更改为 "c:\xampp\php\php7apache2_4.dll" 在我的例子中.确保以管理员身份打开文件并保存所做的更改。

第 4 步: 运行 xampp 服务器和一切正常。在对 apache 配置文件进行更改之前,不要忘记关闭 xampp 服务器。

希望这对您有所帮助。干杯! :)

我在 httpd.conf 中有一个 hard-coded IP,而我的本地 IP 已更改,这导致了我的问题,更改了 IP 并再次运行

当我运行xampp控制面板正常时:

我曾经 运行

我无法启动apache 所以,我将 运行 与管理员联系:

我可以运行apache

对于那些不小心(或没有)更改其中一个 .conf 文件而 apache 没有 运行 即使尝试了上述所有解决方案的人。

跟踪问题所在位置的一种简单方法是通过命令提示符 运行 Apache:

(On windows) : 以管理员身份打开命令提示符,然后在 Apache 的 bin 文件夹中导航,下一步 运行

httpd为了运行apache

C:\xampp\apache\bin\httpd

我的情况是:

有人在导致问题的特定文件中添加了虚拟主机。我评论了这些行和 Apache 运行 很好。

尝试安装 XAMPP 的 x86 版本。他们网站上的默认 XAMPP 版本是 x64(可能是因为我使用的是 x64 Windows 7)。 download link here

我在 Program Files 下安装时遇到了这个问题,由于写入问题,他们不推荐这样做。如果您没有以管理员身份登录并使用密码进行安装,这可能只是一个问题。我只是卸载并安装在不需要管理员权限的目录中。

确保 Apache 没有在服务(控制面板、管理工具、服务)中被禁用。如果它已禁用,则将其设置为手动,它应该 运行。那是我的情况,我发现 Apache 已禁用。

针对我的特定情况的解决方案(它已经工作了几天才变得乏味):

端口 80 不是问题,但我在弄乱 Services 和 Startup 时做了一些事情。

  1. 在 Windows“开始”菜单中键入 msconfig
  2. 点击系统配置

Screenshot for System Configuration

  1. Services 选项卡中,搜索 Apache24(单击 window 底部复选框中的 "Hide all Microsoft services" 以便于查找)
  2. 如果其复选框未选中,请选中它

如果已经检查过了,那么本指南将无济于事。但是如果是:

  1. 点击确定,您的电脑将需要重新启动
  2. 再试一次!就我而言,一旦我打开 Xampp
  3. ,Apache 就已经是 运行

我遇到了同样的问题,但这是因为我已经安装了以前版本的 xampp,我尝试安装更新的版本。我在另一个文件目录中安装了较新的版本(我将文件目录命名为 xampp2)。我通过卸载较新版本、重命名旧版本(我将其重命名为 xamppold)并再次安装 xampp 来解决问题。

我猜如果你没有在另一个文件目录中安装xampp,那么重新安装xampp应该就足够了。如果您担心您的文件,您总是可以在重新安装之前进行备份 xampp。

我在查看 xampp activity 日志(底部的列表)并意识到 xampp 试图打开自定义文件路径后解决了问题,但我有另一条路线小路。如果第一个选项不起作用,至少你可以在 activity 日志中向上滚动,看看你在以管理员身份启动并尝试重新安装 Apache 模块或尝试启动模块时遇到了什么错误。

您可能想知道为什么我不从一开始就简单地卸载整个东西,答案是因为我必须在 xampp 中为一些不同的项目调整一些东西(从改变端口,将 .dll 添加到 Apache 中的 运行 mongo.db),我只是懒得再重新做一遍:b

我希望我的回答对任何人都有帮助,因为这是我第一次在 Whosebug 中写作:)

干杯

我有相同的 issue.Just 单击服务 button.Then 找到 apache 并右键单击 > 属性 > 将启动类型设置为自动/手动。现在关闭 apache 并尝试 again.It 会起作用!

在我的例子中,有同样的问题 Xampp window,我从旧的 \apache\conf\extra\httpd-vhosts.conf 复制了条目 Xampp 版本到新安装的版本,这样我就可以继续在浏览器中打开本地项目。 vhosts 路径之一是错误的。删除该条目后,Apache 正常启动。

@Karthik 对 "in the Event viewer (Control panel -> View Event Logs" 的引用节省了我的时间。很容易假设 Xampp 日志会指出问题所在。它没有。

我遇到了同样的问题,在 xampp 文件夹中执行 "setup_xampp.bat" 解决了我的问题。

对我来说,这不是端口或服务问题;我必须 re-run XAMPP 安装脚本。虽然这并没有直接解决我的问题,但脚本比 XAMPP 日志要冗长得多,为我指明了正确的方向以实际解决问题。

在 XAMPP GUI 中,单击 Shell,键入 set,按 Tab 自动完成 setup_xampp.bat 文件,然后按 Enter 到 运行 它。

在我的例子中,我得到了以下输出:

[ERROR]: Test php.exe failed !!!
[ERROR]: Perhaps the Microsoft C++ 2008 runtime package is not installed.
[ERROR]: Please try to install the MS VC++ 2008 Redistributable Package from the Mircrosoft page first
[ERROR]: http://www.microsoft.com/en-us/download/details.aspx?id=5582

这个特殊错误具有误导性。尽管它指定了 Visual C++ 2008 Redistributable Package,PHP 7.4.x 需要 Visual C++ 2019 Redistributable Package.

安装后并按照提示重新启动,果然我现在可以正常启动 Apache。

还要检查您的 xampp 是否安装在主目录(如 C、D 或 E)中,而不是安装在该目录的文件夹中?即(“D:/Xampp”还是“D:/something/Xampp”)如果它不在目录的主路径中,它将显示此错误。

将您的 xampp 目录从“D:\Something\Xampp”复制到“D:”
于是就变成了这样“D:\Xampp” 问题将得到解决。

如果您曾经编辑过端口号,请确保端口号前没有 space。

从 Xampp 控制面板,单击配置(在 Apache 旁边),然后选择 Apache(httpd.config),搜索 listen 80 并将端口更改为另一个端口。