27

我试图在我的 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

然后我运行任务列表,发现系统正在使用 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

谁能告诉我做错了什么?

4

11 回答 11

21

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

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

于 2013-02-22T19:59:19.030 回答
17

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

净止损是/y

或 XP:

净停止 iisadmin /y

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

于 2014-03-24T06:03:47.977 回答
7

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

于 2015-12-31T03:57:36.410 回答
5
Microsoft HTTPAPI 可能使用端口 80

尝试停止以下服务:
  Web 部署代理服务
  SQL Server 报告服务
  SQL Server VSS 编写器
于 2015-06-04T11:18:27.397 回答
4

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

请找到以下步骤

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

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

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

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

恭喜问题解决了。

于 2016-03-16T11:49:54.037 回答
1

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

于 2013-03-13T05:58:36.857 回答
1

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

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

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

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

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

我的解决方案:

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

真正原因:

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

希望这对其他人有帮助。

于 2016-02-25T08:36:14.057 回答
1

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

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

希望你觉得有用。

于 2017-12-01T20:55:32.653 回答
0

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

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

于 2019-06-19T07:54:45.940 回答
0

你可以解决它

sudo nano /etc/apache2/ports.conf

并更改为听 8080

于 2019-06-04T16:41:54.113 回答
-5

这可能是因为物理 RAM 不足。

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

于 2015-03-29T12:03:55.247 回答