安装成功但无法在我的 Windows 7 系统上启动 apache 2.4

Posted

技术标签:

【中文标题】安装成功但无法在我的 Windows 7 系统上启动 apache 2.4【英文标题】:Succeeded installing but could not start apache 2.4 on my windows 7 system 【发布时间】:2013-02-07 14:16:55 【问题描述】:

我正在尝试在我的 Windows 7 系统上安装和运行 apache 2.4 我去了 apache 2.4 bin 目录并运行以下命令: 注意:我以管理员身份打开了 cmd 窗口。 C:\Apache24\bin>httpd.exe -k 安装

它的输出如下:

Installing the Apache2.4 service
The Apache2.4 service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service can be started.
(OS 10013)An attempt was made to access a socket in a way forbidden by its acces
s permissions.  : AH00072: make_sock: could not bind to address [::]:80
(OS 10013)An attempt was made to access a socket in a way forbidden by its acces
s permissions.  : AH00072: make_sock: could not bind to address 0.0.0.0:80
AH00451: no listening sockets available, shutting down
AH00015: Unable to open log

因此它将 apache 2.4 作为服务安装,但无法启动。似乎正在使用 localhost 端口 80。这就是 "[::]:80" 的意思吗?

然后我停止了我一直运行的 apache 2.0 服务和 mysql 服务,希望停止其中一个服务可以释放 localhost 端口 80。

我还运行 netstat -o 来查看端口 80 是否正在使用。不是。

但是,我发现一个进程正在使用上面的套接字,它是一个正在监听上面的套接字的进程

 TCP    [::]:80                User-PC:0              LISTENING       4

然后我运行 tasklist 发现系统使用的是 pid 4。4 在 pid 列下

System                           4 Services                   0        544 K

最后,从尝试启动服务失败 我收到了一个记录在 Windows 系统事件中的错误。

Log Name:      System
Source:        Service Control Manager
Date:          2/21/2013 1:58:03 PM
Event ID:      7024
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      User-PC
Description:
The Apache2.4 service terminated with service-specific error Incorrect function.

Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Service Control Manager" Guid="555908d1-a6d7-4695-8e1e-26931d2012f4" EventSourceName="Service Control Manager" />
    <EventID Qualifiers="49152">7024</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8080000000000000</Keywords>
    <TimeCreated SystemTime="2013-02-21T18:58:03.723988900Z" />
    <EventRecordID>87756</EventRecordID>
    <Correlation />
    <Execution ProcessID="560" ThreadID="7596" />
    <Channel>System</Channel>
    <Computer>User-PC</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="param1">Apache2.4</Data>
    <Data Name="param2">%%1</Data>
  </EventData>
</Event>

尝试启动时的错误表明,由于缺乏访问权限,make-sock 无法绑定到在我看来类似于 localhost 端口 80 的套接字。例如,

  (OS 10013)An attempt was made to access a socket in a way forbidden by its acces
    s permissions.  : AH00072: make_sock: could not bind to address [::]:80

谁能告诉我我做错了什么?

【问题讨论】:

这实际上帮助我解决了我的问题,这是一个完全不同的问题,但我得到了完全相同的服务启动错误The Apache2.4 service terminated with service-specific error Incorrect function.。这个问题让我去看看error.log文件:) 您的 netstat -o 选项让我发现哪个程序与端口 80 绑定 skype 是我机器的罪魁祸首。为了解决它,我搜索了“skype apache 冲突”,这对我有帮助:[链接]***.com/questions/4705005/…。希望这会对遇到同样问题的人有所帮助。 我发现:运行SKYPE时apache无法启动。 我同意乔的解决方案。就我而言,我使用的是 Windows 10,而 Apache 一直工作到今天(2017 年 5 月 1 日)。我更改了 Apache 安装文件夹中 httpd.conf 中的“Listen”指令。现在我可以启动 Apache Web 服务器,我喜欢使用 Apache 监控应用程序来做这件事。如果您已经在 Windows 上安装了 Apache,那么您应该在 Apache 下的开始程序菜单中有一个很好的、易于使用的 httpd.conf 快捷方式。 【参考方案1】:

很抱歉提出了一个冗长的问题。为了解决我的问题,我只是告诉 apache 2.4 在 httpd.conf 中监听不同的端口。由于 System 使用的 pid 4 正在侦听端口 80,因此我不想进一步探索。

我将以下内容放入 httpd.conf。 听 127.0.0.1:122

【讨论】:

PID 4 最有可能被 IIS 万维网发布服务 (W3SVC) 使用。要释放端口,请转到 windows 中的服务并停止 IIS。【参考方案2】:

如果您使用的是 windows 操作系统并且认为 skype 不是嫌疑人,那么您可能需要检查任务管理器并检查“显示所有用户的进程”并确保没有 httpd.exe 条目。否则,结束其进程。这解决了我的问题。

【讨论】:

【参考方案3】:

最有可能的罪魁祸首是 Microsoft Internet Information Server。您可以在 Windows 7/Vista 上从命令行停止该服务:

净停止是 /y

或 XP:

net stop iisadmin /y

读这个 http://www.sitepoint.com/unblock-port-80-on-windows-run-apache/

【讨论】:

您必须在每次启动后执行此操作,因为 IIS 将在启动时重新启动。 为避免这种情况,请进入服务并禁用 IIS。注意:这是“禁用”,而不是“停止”。在 Windows Server 2012 上,它被称为“万维网发布服务”。 这解决了我的问题,如果停止了其他服务会不会有问题?【参考方案4】:

这可能是因为物理内存不足。

检查文档中的最低系统要求,并尽可能关闭不必要的程序。

【讨论】:

尽管投反对票,但 RAM 短缺会导致这样的错误,仅供参考。 :)【参考方案5】: Microsoft HTTPAPI 可能使用端口 80 尝试停止以下服务: Web 部署代理服务 SQL Server 报告服务 SQL Server VSS 编写器

【讨论】:

谢谢 - 这对我有帮助(最近安装了 SQL Server express)【参考方案6】:

win7升级到win10后,我也遇到了同样的问题。 然后我检查 services.msc 并发现“万维网发布服务”默认自动运行。 所以我禁用了它,然后再次运行 Apache 服务。

【讨论】:

谢谢!我不知道这个服务是如何被激活的,因为我的 Apache 在 Win7 上运行得很好,在我的电脑挂起并且不得不强制重启之前!【参考方案7】:

所以,这就是我发布两个(或更多)帖子的原因。

我在启动服务时遇到了同样的问题(无法打开日志)。

我认为这是因为我试图将 htdocs 放在 VeraCrypt 加密容器中,这很荒谬,因为我已经安装了此类包含的内容,并且我使用连接来不影响路径。

我读到的原因可能是内存不足:经过一些测试,我得出了下一个结论。

如果它是一项服务,Windows 不会将页面发送到虚拟内存以释放足够的内存,对于它正在执行的应用程序,我有超过 200GiB 的页面文件准备好在 4GiB 64 位 Windows 10 中用作虚拟内存。

我的解决方案:

    运行一个免费实用程序来释放 ram(我的测试中为 512MiB) 启动服务后立即启动,没有错误

真正的原因:

我使用的是使用 1/2 物理空闲内存 (1.5GiB) 的虚拟机

希望这对其他人有所帮助。

【讨论】:

【参考方案8】:

我终于解决了这个问题,是因为某些系统如skype和系统进程占用了80端口,你可以使用netstat -ao检查80端口

请找到以下步骤

    安装 Apache HTTP 后,使用 cmd 转到 bin 文件夹

    使用 httpd.exe -k install 将其安装为服务,即使您看到错误也没关系

    现在确保根据您的操作系统安装了服务(即使没有启动)

    重启系统,你会发现Apache服务会第一个占用80端口,

恭喜问题解决。

【讨论】:

另一种阻止 NT 内核和系统进程占用此端口的解决方案 在 Windows 中:1-打开设备管理器 -> 然后查看 -> 显示隐藏设备 2- 选择“非即插即用驱动程序”->HTTP 3-打开它并从驱动程序->禁用【参考方案9】:

我也遇到了同样的问题,然后我尝试在每次更改后重新启动我的系统,它对我有用:

    在 cmd 提示符(运行管理员)中使用以下命令卸载 Apache2.4: httpd -k uninstall。 重启系统。 使用以下命令打开 cmd 提示符(运行管理员): httpd -k install. 然后httpd -k install

希望你觉得有用。

【讨论】:

【参考方案10】:

你可以解决它

sudo nano /etc/apache2/ports.conf

并改为听 8080

【讨论】:

如果你使用 wsl ubuntu 将以下行添加到 /etc/apache2/apache2.conf 文件的末尾: AcceptFilter http none【参考方案11】:

就我而言,这是由于 Apache 正在侦听的 IP 地址。以前我将它设置为 192.168.10.6,最近 Apache 服务没有运行。我注意到由于我的笔记本电脑wifi最近发生了变化,新的IP也不同了。将 wifi IP 修复为笔记本电脑以前的 IP 后,Apache 服务再次运行,没有任何错误。

此外,如果您不想更改 wifi IP,请删除/注释 httpd.conf 文件中的硬编码 IP 以解决冲突。

【讨论】:

以上是关于安装成功但无法在我的 Windows 7 系统上启动 apache 2.4的主要内容,如果未能解决你的问题,请参考以下文章

在 64 位 Windows 7 上安装 Visual Studio 2003

IIS 7:值不在预期范围内

如何在我的桌面(Windows 7)上使用我的python程序在没有notify2,notify-send,pqt5的桌面上显示简单的通知?

无法在 Windows 7 中使用 Python 启动 PhantomJS

windows 7 安装时提示:安装程序无法创建新的系统分区

安装成功但无法识别节点