Xampp - Apache意外关闭,日志文件为空且没有事件记录。

23

我在我的电脑上安装了XAMPP。我正在尝试从XAMPP控制面板运行Apache。

我通过右键单击快捷方式并选择“以管理员身份运行”来启动XAMPP控制面板(我已经登录到具有管理员特权的帐户)。控制面板启动,一切似乎正常(没有错误消息/警告)。

Xampp Control Panel After Startup

当我点击Apache旁边的Start按钮时,出现以下错误消息:

2:22:44 PM  [Apache]    Attempting to start Apache app...
2:22:45 PM  [Apache]    Status change detected: running
2:22:45 PM  [Apache]    Status change detected: stopped
2:22:45 PM  [Apache]    Error: Apache shutdown unexpectedly.
2:22:45 PM  [Apache]    This may be due to a blocked port, missing dependencies, 
2:22:45 PM  [Apache]    improper privileges, a crash, or a shutdown by another method.
2:22:45 PM  [Apache]    Check the "/xampp/apache/logs/error.log" file
2:22:45 PM  [Apache]    and the Windows Event Viewer for more clues

Xampp Control Panel Apache Error

注意,它告诉我Apache意外关闭了,并要检查error.log文件和Windows事件查看器。

我检查了error.log文件,但是它是空的:

Apache Error Log File Empty

我还使用Windows事件查看器检查了任何事件,但是事件查看器显示没有事件(在应用程序下):

Windows Event Viewer No Application Events

我已经检查了可能阻止端口的程序等等(如Skype、Visual SVN Server),并关闭了可能导致问题的任何程序。

还有其他办法可以找出可能发生的情况吗?

谢谢。

更新

我尝试从DOS命令提示符运行apache来找出问题。从命令提示符运行会给我特定的错误以及这些错误所在的httpd.conf文件中的位置。事实证明,我的ServerRootDocumentRoot值不正确(指向错误的目录)。我将它们更改为指向正确的目录,现在我可以从控制面板启动apache。

奇怪的是,当我从控制面板启动时,为什么没有看到有关ServerRootDocumentRoot的错误消息?


我正在运行Skype,但出现了有关端口80的错误,所以我退出了Skype。 - Jan Tacci
3
更新:我找出了问题所在。我的http.conf文件有无效的条目。具体来说,ServerRoot和DocumentRoot指向错误/缺失的目录。 - Jan Tacci
很高兴你解决了它 :) - Jochem Kuijpers
@Jan Tacci - 谢谢了,伙计,你提供的无效输入答案解决了我的问题。实际上,我创建了一个虚拟主机,它指向我外部硬盘上的文件位置,而当我运行xampp时,我的外部硬盘没有连接。注释掉那段代码,然后重新启动xampp就解决了这个问题。 - Vineet Sajwan
@JanTacci 谢谢!我遇到了同样的问题,是关于vhost.conf语法错误。你可以通过运行cmd并从那里运行C:\xampp\apache\bin\httpd.exe来查看错误。 - PauAI
显示剩余2条评论
7个回答

30

我想提一下,我也使用了命令提示符技术。

我的问题:我重新启动了Apache,但是无法再次启动程序。

尝试解决方案1:这没有起作用。虽然没有像SKYPE这样的程序占用端口,但我尝试调整我的端口设置。

尝试解决方案2:这没有起作用。我读到的另一个解决方案是在Windows防火墙中允许公共访问或禁用防火墙。我尝试了这个方法。

尝试解决方案3:这起作用了最后我偶然发现了这篇文章。我打开了gitbash(默认的Windows命令提示符也可以)。

我输入“cd c:/xampp/apache/bin”,然后输入“httpd”。

这向我显示了一个语法错误,并指向我的“httpd-vhosts”文件中的特定行。我找出了该行的问题,对于我来说是一个丢失的“#”。保存文件,然后再次键入“httpd”。这次Apache服务器启动了。

希望这对某些人有所帮助!


这帮助我找到了我需要的内容。在我的情况下,我需要在httpd.config文件中更改我的端口(Listen)和ServerName。谢谢! - werdsackjon
2
非常感谢。帮了我大忙。是根目录语法的问题。 我用反斜杠,结果是错误的。 错误的: C:\Users\projects 正确的: C:/Users/projects - Vadim
谢谢您先生。另外,我的新“apache/extra”文件夹中没有包含正确的文件(之前的安装),所以我只是从旧的安装中复制了它们,并将旧文件覆盖到新文件中。我进行了升级,它起作用了。 - megatr0n
谢谢,你的解决方案3对我调试错误非常有帮助。 - Sunchock
非常感谢。这使得错误在cmd中清晰地显示出来。 - le hien

1
在我的情况下,我需要在运行IIS的服务器上安装XAMPP,并且必须保持IIS运行。因此,在XAMPP中,如果您通过主配置按钮>服务和端口设置更改端口,它将不起作用。相反,只需单击Apache的配置按钮,然后单击Apache(httpd.conf)。将“listen 80”更改为“listen 8080”(不带引号)或任何您希望使用的端口号 - 只需确保当前未使用即可。希望这能帮助到某些人。

感谢您关于在命令行中运行Apache的提示...我遇到了另一个错误,但从xampp控制台运行并没有什么帮助。 - r0m4n

0

我曾经遇到过同样的问题,以下是我解决它的方法。

  • Skype正在使用端口80,而Apache服务器需要该端口。因此打开Skype并转到“工具”>“选项”>“高级”>“连接”。取消勾选“使用端口80和443进行其他传入连接”

  • 打开XAMPP控制面板并打开“httpd-ssl.config”文件,找到“Listen 443”行并将其更改为另一个端口(例如“Listen 444”)。


0

我的日志文件没有记录,Windows事件查看器也没有记录从Apache引发的错误。但是从命令行启动Apache时,出现了无法绑定端口80的错误消息。 我正在使用Skype占用了端口80。退出Skype并不能解决问题。因此,我在httpd.conf文件中将端口配置为90



0

这个问题可能是由以下三个原因引起的: 1. ServerRoot、DocumentRoot路径不正确 2. 其他应用程序已经在httpd.config或httpd-ssl.config中使用了端口。请使用XAMP控制面板上的NetStat按钮检查此冲突。 3. 在XAMP控制面板上设置的httpd/httpd-ssl端口与其各自的配置文件中设置的不匹配。

请纠正上述不匹配以解决问题。


0

也许您需要配置端口。

在XAMPP控制面板中,您可以看到一个名为“Config”的按钮,位于Apache行上。单击它,然后选择“Apache(httpd.conf)”。它会打开一个文件,您需要向下滚动到某一行,其中有类似以下内容:

#Listen 12.34.56.78:80

#Listen 80

将“#Listen 80”更改为“#Listen 8088”。

也许这样可以解决问题。


你需要移除开头的#,否则该行仍然被注释掉并将被忽略,Apache 将继续使用默认的80端口。 - Rup

0

我有和很多人一样的问题,最终找到问题出在 apache/conf/extra/httpd-ssl.config 文件中。我不得不注释掉 SSLCertificateFile "conf/ssl.crt/server.crt"。但是,仅仅这么做并没有解决我的问题,从CLI运行httpd也没有显示任何错误。我发现我还需要在httpd-ssl.config中设置SSLEngine off

注意:我在本地测试服务器上进行了此操作。


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