27

Windows 7 システムに Apache 2.4 をインストールして実行しようとしています。Apache 2.4 の bin ディレクトリに移動して、次のコマンドを実行しました。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 をサービスとしてインストールしましたが、起動できませんでした。ローカルホストのポート 80 が使用されているようです。これは「[::]:80」の意味ですか?

次に、実行したままにしていた apache 2.0 サービスと mysql サービスの両方を停止しました。いずれかを停止すると、ローカルホストのポート 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 がローカルホスト ポート 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 の別のポートをリッスンするように指示しました。システムはポート 80 でリッスンする pid 4 を使用していたため、これ以上調査する必要はありませんでした。

以下をhttpd.confに入れました。聞く 127.0.0.1:122

于 2013-02-22T19:59:19.030 に答える
7

win7をwin10にアップグレードした後、私も同じ問題を抱えています。次に、services.msc を調べたところ、「World Wide Web Publishing Service」がデフォルトで自動的に実行されていることがわかりました。それで、それを無効にして、Apache サービスを再度実行しました。

于 2015-12-31T03:57:36.410 に答える
5
ポート 80 は Microsoft HTTPAPI によって使用される可能性があります

次のサービスを停止してみてください。
  Web 配置エージェント サービス
  SQL Server レポート サービス
  SQL Server VSS ライター
于 2015-06-04T11:18:27.397 に答える
4

最終的にこの問題を解決しました。これは、Skype のような一部のシステムとシステム プロセスがポート 80 を使用するためでした。ポート 80 に対して netstat -ao を使用して確認できます。

次の手順を見つけてください

  1. Apache HTTP をインストールしたら、cmd を使用して bin フォルダーに移動します。

  2. エラーが表示されても httpd.exe -k install を使用してサービスとしてインストールしてください。

  3. OSに応じて、サービスがインストールされていることを確認します(開始されていない場合でも)

  4. システムを再起動すると、Apache サービスが最初に 80 ポートを使用することがわかります。

おめでとう、問題は解決しました。

于 2016-03-16T11:49:54.037 に答える
1

Windows OSを使用していて、Skypeが疑わしいとは思わない場合は、タスクマネージャーを確認し、[すべてのユーザーからのプロセスを表示する]を確認して、httpd.exeのエントリがないことを確認してください。それ以外の場合は、プロセスを終了します。それは私の問題を解決します。

于 2013-03-13T05:58:36.857 に答える
1

だから、それが私が2つ(またはそれ以上)の投稿をする理由です。

サービスの開始時に同じ問題が発生していました (ログを開くことができません)。

VeraCryptで暗号化されたコンテナ内にhtdocを入れようとしていたためだと思いました.

原因を読んだのはラムが少ない可能性があります。いくつかのテストの後、次の結論に達しました。

Windowsは、それがサービスである場合、十分なRAMを解放するために仮想RAMにページを送信していません。それが実行しているアプリケーションの場合、4GiB 64ビットWindows 10で仮想RAMとして使用する準備ができている200GiBを超えるページファイルがあります。

私の解決策:

  1. RAMを解放する無料のユーティリティを実行します(私のテストでは512MiB)
  2. サービス開始直後、エラーなしで起動

本当の原因:

  • 物理空き RAM の 1/2 (1.5GiB) を使用する仮想マシンを使用していました

これが他の人に役立つことを願っています。

于 2016-02-25T08:36:14.057 に答える