xampp中的apache无法打开-之前工作过

Posted

技术标签:

【中文标题】xampp中的apache无法打开-之前工作过【英文标题】:apache in xampp won't turn on - after it worked before 【发布时间】:2012-02-26 10:50:54 【问题描述】:

我最近在我的 Windows 机器上安装了 Xampp。当我这样做时它起作用了,请参阅here。但是,现在apache不会打开。我意识到我没有正确关闭它(没有使用 xampp_stop),所以这可能是原因。

我得到的错误是:

    make_sock: could not bind to address 0.0.0.0:80 
    no listening sockets available, shutting down 
    unable to open logs 

我怎样才能让它工作?

【问题讨论】:

刚刚遇到了同样的问题。 Skype 是罪魁祸首。自动更新后,选项再次设置为使用端口 80。不得不再次禁用该选项。 【参考方案1】:

刚刚遇到这个关于 Apache 不工作的非常好的文档博客。我认为如果你有 apache 启动问题,它真的很好参考。

apache friends

这是我从链接中记下的步骤:

检查 xampp 文件夹是否不在包含空格或括号的文件夹中,即 (Program Files (x86) 确保您已运行 \xampp\setup_xampp.bat(可能以管理员身份) 在 CMD 中运行 -netstat -a (或查看 Xampp control beta 3 - 并按下 netstat 按钮...),确保端口 80 上没有运行任何东西(在 win 7 上很多时候它实际上是 skype使用端口 80)(退出 Skype 并重试,如果是,请在 Skype --> 选项 ->> 高级 --> 确保未选中“使用端口 80 作为替代复选框” 如果“系统”正在使用端口 80,那么它的窗口正在使用它(我已经读过这是一些 IIS 服务) - 如果您启用 xampp 作为服务并重新启动,那么 xampp 在系统之前获取端口 80。 .. 如果您不想作为服​​务运行,请打开 xampp\apache\conf\http.conf 并更改 apache 将运行的端口(搜索字符串“Listen 80”和“ServerName localhost:80”并更改 80换成别的东西,例如:“180”) 确保您以管理员身份运行 Xampp control.exe 暂时停止你的防火墙,看看它是否被停止(然后再次尝试启动 apache)如果是,在 windows 防火墙中创建一个例外 检查您的防病毒软件是否没有阻止它。 如果您运行的是 Windows 7 64 位终极版 (sp1)(就像我一样) - 那么您可能仍然遇到问题(就像我一样) 最后一次尝试是删除xampp文件夹,并下载以前版本的xampp,然后再试一次。

如果您认为其他任何步骤也可能导致问题,请发表评论。

【讨论】:

这是 Skype(在另一个用户上,所以我最初没有注意到它正在运行)。谢谢@Hightower! 移动 xampp 后,单独运行 \xampp\setup_xampp.bat 不是解决方案。在我发现我需要更改DocumentRoot 以指向xampp/apache/conf/extra/httpd-vhosts.conf 中所有虚拟主机定义中的新路径之前,我陷入了类似的情况。我希望它可以帮助某人【参考方案2】:

我最终解决了它。 转到 Xampp 控制面板。选中“服务”复选框。 单击“SCM”按钮。 (或“服务”按钮,有“SCM”按钮)。 然后我点击了服务列表中的“Apache”。打开它。 现在它在控制面板中标记为“正在运行”,并且“本地主机”可以正常工作。

【讨论】:

奇怪的是它不能作为一个进程工作!如果你知道为什么,请告诉我我很好奇。我们在安装 Windows 时遇到了类似的问题,我们的解决方案最终是重新安装 Windows,但原因不是 Xampp 的 apache 运行失败。 不,我不知道为什么,但是我们最终使用的 xampp 似乎有“beta 版 3”控制面板,之后常规控制面板打不开。跨度> 【参考方案3】:

几个月前我遇到了这个问题。您必须通过选中 XAMPP 控制面板中的 Svc 复选框将 Apache 设置为自动 Windows 服务。将其设置为服务后,您需要重新启动 Windows,然后才能启动 apache。重新启动 Windows 后,您应该能够通过 XAMPP 控制面板停止和启动 Apache。

来自a blog post about it:

您必须这样做的原因是因为 Windows 7 有一个名为 http.sys 的服务,它会自动启动并使用端口 80。将 Apache 作为自动服务运行会导致 apache 在 http.sys 服务之前启动。这允许 apache 在 http.sys 启动之前获取端口 80。

【讨论】:

【参考方案4】:

一:如果它是作为服务运行的,在windows中检查你的服务并确保它已经停止。

二:如果不是服务,就只是一个进程;进入任务管理器,找到httpd/apache,终止进程。

三:确保您以管理员身份运行 xampp_start / xampp_control,在某些系统上这很重要。

我建议始终使用 xampp_control,因为即使最近发生了一些异常事件,它也可以快速了解 Apache 是否正在运行。

试试

netstat -aon | more

如果这不起作用,请查看是否有其他东西正在侦听该端口,然后终止该进程。

您可能还希望编辑 Apache 的 httpd.conf(可能在 xamppdir/apache/conf 中)以监听另一个端口并查看它是否会启动。

【讨论】:

我正在尝试控制面板,但它不允许我启动 Apache。每次我单击“启动”Apache 时,它​​都会显示“忙碌”(首先显示Apache started [port 80],然后立即断开连接并显示busy)。我如何知道它是服务还是流程?我认为这是一个过程,而不是服务,但我似乎无法在我的任务管理器中找到它...... ps - 如何检查我是否以管理员身份运行? 在控制面板中应该有一个检查,上面写着“svc”或“服务”;如果未选中,则它作为进程运行。要以管理员身份运行,请右键单击可执行文件,如果您拥有这些访问权限,您应该会看到“以管理员身份运行”选项。您需要先关闭面板的当前实例。 此外,最好确保在此期间您没有开始运行侦听端口 80 的其他进程。一种方法是转到您的浏览器并输入“localhost”。 不,没有运行,我检查了浏览器。我将两者都作为服务或进程进行了尝试,但两者都不起作用,因为 svc 问题是相似的 - 它说 Apache server started 然后断开连接。我刚刚尝试run as administrator 并遇到了同样的问题:( 我先关闭了所有相关的...【参考方案5】:

步骤:

    在这些行中更改 httpd.cong 文件:

    Listen 8080

    ServerName localhost:8080 ( port as example, 8080)

    现在,在 xampp-control.exe 所在的位置创建一个 xampp.ini 文件并将代码放入其中:

    [PORTS]

    apache = 8080

    现在重新启动 xampp。

希望,它可以改变 apache 端口。但是,如果您已经安装了 oracle 10g 客户端或任何安装了 perl 的软件,请执行以下更多步骤:

4.从以下位置更改行:

`# Perl settings`

`Include "conf/extra/httpd-perl.conf"`

 `# Perl settings`

 `#Include "conf/extra/httpd-perl.conf"`

现在重启xampp,在8080端口就可以正常工作了。

【讨论】:

【参考方案6】:

我在 TeamViewer 应用程序中发现了问题 - 它默认使用端口 80。在高级设置下,我进行了更改,因此应用程序不会使用端口 80 或 443 进行传入连接。然后切换 xammp 并再次运行。有效!

【讨论】:

【参考方案7】:

我遇到了类似的问题,经过一番研究,发现我的罪魁祸首是“万维网发布服务”W3SVC in iisvcs 组)。

在我的例子中,停止此服务后,XAMPP 中的 Apache 运行没有问题。

希望对你有帮助

【讨论】:

【参考方案8】:

我的 XAMPP Apache 突然无法启动,虽然我没有收到具体的错误消息,但这是因为我安装了 Skype 升级,当我的电脑启动时 Skype 接管了端口 80,阻止了 Apache .我调整了 Skype 高级设置来解决这个问题。

【讨论】:

【参考方案9】:

如果您的问题尚未解决,请扫描此页面以查找“Windows 自动修复”链接。它对我有用:运行工具,重新启动 PC,打开所有端口,立即开启。

http://support.microsoft.com/kb/811259/en

GL

【讨论】:

【参考方案10】:

这可能对其他人有所帮助,这就是我发布我的特定解决方案的原因。我最近将 Zend Server CE 换成了 XAMPP (2.5)。 VHOSTS 文件必须使用包含指令设置到 error_log。我遇到了 SVN 问题,所以我擦除了我正在处理的项目以重新安装。但是,我碰巧在进行 svn 结帐之前启动了 XAMPP。就在那时,我注意到 apache 正在忙……Apache 开始了 [Port 80] 业务。有人对这个线程的评论让我想起了 Include 指令。我翻阅了目录并添加了一个空白的 error_log 和 blammo! Apache 启动良好。

这也可能对其他人有所帮助:)

【讨论】:

【参考方案11】:

在我的情况下,我通过打开 xampp\apache\conf\http.conf 解决了它。

我将聆听 80 更改为聆听 2337 在该行之上,我必须添加 Listen 127.0.0.1:80

然后我打开了 xampp\apache\conf\httpd-ssl.conf

我将 Listen 80 更改为 Listen 7332

然后我可以再次连接到 localhost。

【讨论】:

以上是关于xampp中的apache无法打开-之前工作过的主要内容,如果未能解决你的问题,请参考以下文章

xampp中mysql无法启动, 显示busy.. mysql started [port 3306]

Windows 10、Xampp、Apache 无法启动,端口 80 正在使用中

XAMPP - PID 4 的“无法打开进程”正在使用端口 80! 12

XAMPP - PID 4 的“无法打开进程”正在使用端口 80! 12

XAMPP - PID 4 的“无法打开进程”正在使用端口 80! 12

为 XAMPP 启用 SSL 后 Apache 无法启动