Windows版Apacheでのconfigtestの方法と起動できない原因の1つ
Windows版Apacheの起動を試みた際に
Error
The requested operation has failed!
といったエラーダイアログだけが出て、何故起動に失敗したのかが分からなくて困る時がある。
まず、httpd.confの記述に間違いがあるかどうかを調べるべきなので、Linuxの「apachectl configtest」コマンドのようにhttpd.confの記述をチェックする機能を使用してみることにする。
LinuxだろうとWindowsだろうとApacheなのだから、たぶん、できるはずだ。
[スタート]→[すべてのプログラム]→[Apache HTTP Server 2.2]→[Configure Apache Server]→[Test Configuration]で、httpd.confのチェックができそうだったので試してみた。
しかし、一瞬、コマンドプロンプトっぽい画面が表示されて、すぐ消えてしまうので、何が何だか分からない。
コマンドプロンプトが一瞬で消えなければよいので、[Test Configuration]を右クリック→[プロパティ]で、「Test Configurationのプロパティ」の[ショートカット]タブを見ると、リンク先に以下の記述があることを確認した。
C:\Apache2.2\bin\httpd.exe -w -t -f "C:\Apache2.2\conf\httpd.conf" -d "C:\Apache2.2\."
※「C:\Apache2.2」の部分は、インストール時に指定できるので、インストール状況により異なる。
Windows版Apacheでのconfigtestの方法は、上記のコマンドをコマンドプロンプトで実行する、ということで良さそうだ。
よし、このショートカットのリンク先をコマンドプロンプトで実行すれば、実行結果が一瞬で消えることなくゆっくりと見ることができそうだ。
《コマンドプロンプトでの実行結果例》
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\NEKO>C:\Apache2.2\bin\httpd.exe -w -t -f "C:\Apache2.2\conf\httpd.conf" -d "C:\Apache2.2\."
Warning: DocumentRoot [C:/Apache2.2/docs/dummy-host.demo] does not exist
Warning: DocumentRoot [C:/Apache2.2/docs/dummy-host2.demo] does not exist
httpd.exe: Could not reliably determine the server's fully qualified domain name, using 192.168.11.177 for ServerName
Syntax OK
コマンドプロンプトに表示されたメッセージに基づき、httpd.confの設定を修正すれば良いことが分かる。
さて、このメッセージに基づき、ダメな部分は全て修正した・・・が、修正する前から、エラーメッセージの末尾にでている「Syntax OK」というメッセージを見て、修正してもApacheの起動には失敗するな、ということが分かってしまった。
「Syntax OK」が出ていれば、httpd.confの文法上の間違いはない、ということになる。
だから、Apacheが起動できない原因は、他にあることになる。
イベントビューアを見ると、以下のエラーを確認できた。
エラー 2012/02/09 3:42:50 Apache Service 3299 なし
ログの名前:Application
ソース:Apache Service
日付:2012/02/09 3:42:50
イベント ID:3299
タスクのカテゴリ:なし
レベル:エラー
キーワード:クラシック
ユーザー:N/A
コンピューター:NEKO
説明:
The Apache service named reported the following error:
>>> (OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。: make_sock: could not bind to address 0.0.0.0:80
さらに、他に3つのエラーが出ていた。(以下に、エラーメッセージのみ記載する。)
The Apache service named reported the following error:
>>> no listening sockets available, shutting downThe Apache service named reported the following error:
>>> Unable to open logsApache2.2 サービスは、サービス固有エラー ファンクションが間違っています。 で終了しました。
1つ目のエラーメッセージ「通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。: make_sock: could not bind to address 0.0.0.0:80」と2つ目のエラーメッセージ「no listening sockets available, shutting down」で、原因が分かった。
Apacheが使用しようとしている80番ポートが既に、何らかのアプリケーションで使用されている、ということだ。
以前、IISが起動していて、Apacheが起動できない、という問題があった。(参照「Windows版Apacheのエラー「Unable to open logs」の原因の1つと解決方法」)
しかし、前回と異なり、今回はIISなど入っていないWindows 7だ。
そこで思い出したのが、Skypeだ。このSkypeが80番ポートを使っている、ということを思い出した。
何故思い出したかというと、実は、以前、SkypeのせいでApacheが起動できない、ということで困ったことがあったからだ。その困ったことを忘れていた・・・。
Skypeを終了したら、Apacheの起動に成功した。
過去に悩んだことと同じことで、数時間もハマるのは、アホらしいなぁ・・・と悔しい思いをしつつも、風邪っぽい症状で夜9時から寝たが午前2時頃に目覚めて頭が痛くて眠れないため、Apacheでも触って少し起きようと思ったのが、間違っているんだ、こんな状況だとまともに頭が働かないから仕方がないとか、言い訳を考えてみたり、Windows版Apacheでのconfigtestの方法をたまたま知る良いきっかけにもなったので、良しとするか、と前向きに考えながら・・・再び寝ることにする。今は熱は36.0度になったが、まだ頭痛が続いているから、寝ないといけないなぁ・・・。